From 84da4435cb711575f173b4426042eb04bef8ee51 Mon Sep 17 00:00:00 2001 From: sneurlax Date: Fri, 21 Aug 2026 13:23:38 -0500 Subject: [PATCH 1/5] feat(ios): exclude i386/x86_64 for simulator pod targets --- ios/Podfile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ios/Podfile b/ios/Podfile index f17bddc919..00dcb91c1d 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -37,5 +37,11 @@ end post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) + target.build_configurations.each do |config| + # Several vendored crypto libraries ship arm64-only simulator slices; + # exclude x86_64 (and legacy i386) so simulator builds on Apple Silicon + # don't try to build/link missing x86_64 slices. + config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'i386 x86_64' + end end end From 8ec840aaf52e84f069111437c57380fad985055e Mon Sep 17 00:00:00 2001 From: sneurlax Date: Fri, 21 Aug 2026 13:24:15 -0500 Subject: [PATCH 2/5] feat(ios): bump crypto plugins for simulator support --- crypto_plugins/flutter_libepiccash | 2 +- crypto_plugins/flutter_libmwc | 2 +- crypto_plugins/frostdart | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/crypto_plugins/flutter_libepiccash b/crypto_plugins/flutter_libepiccash index f4a55aa9e5..1f75024641 160000 --- a/crypto_plugins/flutter_libepiccash +++ b/crypto_plugins/flutter_libepiccash @@ -1 +1 @@ -Subproject commit f4a55aa9e5b6066428402291ed228aa0dd921534 +Subproject commit 1f75024641af15621353a645c5b23222efb56034 diff --git a/crypto_plugins/flutter_libmwc b/crypto_plugins/flutter_libmwc index c8db22aed2..c7913abc2b 160000 --- a/crypto_plugins/flutter_libmwc +++ b/crypto_plugins/flutter_libmwc @@ -1 +1 @@ -Subproject commit c8db22aed2c50aa1e95dfc532abb0a4961c543d7 +Subproject commit c7913abc2b2e02a3f66472f88397071a93300743 diff --git a/crypto_plugins/frostdart b/crypto_plugins/frostdart index 395765297a..fb4ae7f576 160000 --- a/crypto_plugins/frostdart +++ b/crypto_plugins/frostdart @@ -1 +1 @@ -Subproject commit 395765297a52c5f867ae6256636cf51e0ad20876 +Subproject commit fb4ae7f57690df8f6ebfdaf79e7c5d23f83b711b From bc82f426c7fc9121b70c98f1de924cb64b45a6f0 Mon Sep 17 00:00:00 2001 From: sneurlax Date: Fri, 21 Aug 2026 13:24:15 -0500 Subject: [PATCH 3/5] docs: add ios simulator build instructions --- docs/building.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/docs/building.md b/docs/building.md index af2d328a94..d6c6b4fd8d 100644 --- a/docs/building.md +++ b/docs/building.md @@ -253,6 +253,58 @@ flutter pub get flutter run ios ``` +#### iOS Simulator (arm64/Apple Silicon) +Running on the iOS Simulator requires simulator (aarch64-apple-ios-sim) +slices for every native dependency. The crypto plugin submodules build +device-only static libraries by default; simulator slices must be built +additionally and are packaged as XCFrameworks: + +``` +# after running scripts/ios/build_all.sh or download_all.sh (device slices): +(cd crypto_plugins/frostdart/scripts/ios && ./build_all.sh) # builds both slices +(cd crypto_plugins/flutter_libepiccash/scripts/ios && ./build_sim.sh) +(cd crypto_plugins/flutter_libmwc/scripts/ios && ./build_sim.sh) +``` + +The remaining native deps are handled as follows: + +- `flutter_libsparkmobile`, `cs_salvium_flutter_libs_ios`: already ship + arm64 simulator slices in their XCFrameworks. +- `tor_ffi_plugin`, `xelis_flutter`: built per-SDK by cargokit at pod + build time; no changes needed. +- `flutter_mwebd`: builds both slices as an XCFramework at pod install + time (requires Go) when using the simulator-enabled fork. +- `cs_monero_flutter_libs_ios`, `cs_wownero_flutter_libs_ios`: build the + simulator dylib from the respective monero_c tree with + `./build_single.sh aarch64-apple-iossimulator -j8` and package it + with the device slice via `tools/dart/bin/build_libs.dart ios` + (cs_monero) or the equivalent tooling in cs_wownero. + +`ios/Podfile` excludes `i386 x86_64` for `iphonesimulator` on all pod +targets, so simulator builds are arm64-only (Apple Silicon). On Xcode 26, +if `xcodebuild` reports no available simulator destinations or +"iOS is not installed", install the matching simulator runtime +with `xcodebuild -downloadPlatform iOS`. + +The simulator-enabled forks of `flutter_mwebd`, +`cs_monero_flutter_libs_ios`, `cs_wownero_flutter_libs_ios`, and +`flutter_libsparkmobile` are wired in with `dependency_overrides` in the +(generated, untracked) `pubspec.yaml`, e.g. as sibling checkouts: + +```yaml +dependency_overrides: + flutter_mwebd: + path: ../flutter_mwebd + cs_monero_flutter_libs_ios: + path: ../cs_monero/cs_monero_flutter_libs_ios + cs_wownero_flutter_libs_ios: + path: ../cs_wownero/cs_wownero_flutter_libs_ios + flutter_libsparkmobile: + path: ../flutter_libsparkmobile-ios-sim +``` + +Then run against a booted simulator as usual (`flutter run`). + #### macOS Run the following commands or launch via Android Studio: ``` From 7833c958f68726c2a0da479541a92d420d6b0439 Mon Sep 17 00:00:00 2001 From: sneurlax Date: Fri, 21 Aug 2026 13:24:15 -0500 Subject: [PATCH 4/5] chore(ios): point native deps at local sim builds --- pubspec.lock | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index e85d3e8109..90d8d7e302 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -477,13 +477,12 @@ packages: source: hosted version: "1.3.0" cs_monero_flutter_libs_ios: - dependency: transitive + dependency: "direct overridden" description: - name: cs_monero_flutter_libs_ios - sha256: dbc149c0787a7702a3842b4974b9bc30bad654daaa57886f874823c29c390ba7 - url: "https://pub.dev" - source: hosted - version: "1.3.0" + path: "/Users/user/src/stack_wallet/cs_monero/cs_monero_flutter_libs_ios" + relative: false + source: path + version: "1.0.0" cs_monero_flutter_libs_linux: dependency: transitive description: @@ -653,12 +652,11 @@ packages: source: hosted version: "1.2.0" cs_wownero_flutter_libs_ios: - dependency: transitive + dependency: "direct overridden" description: - name: cs_wownero_flutter_libs_ios - sha256: "9ffd158469a0a45668d89ce56b90e846dd823ffd44ee6997b50b76129e6f613c" - url: "https://pub.dev" - source: hosted + path: "/Users/user/src/stack_wallet/cs_wownero/cs_wownero_flutter_libs_ios" + relative: false + source: path version: "1.3.0" cs_wownero_flutter_libs_linux: dependency: transitive @@ -1019,11 +1017,9 @@ packages: flutter_libsparkmobile: dependency: "direct main" description: - path: "." - ref: "783bd00f0114b007f7ef97017cd10ad263ed452c" - resolved-ref: "783bd00f0114b007f7ef97017cd10ad263ed452c" - url: "https://github.com/cypherstack/flutter_libsparkmobile.git" - source: git + path: "/Users/user/src/stack_wallet/flutter_libsparkmobile-ios-sim" + relative: false + source: path version: "0.1.0" flutter_lints: dependency: "direct dev" @@ -1060,10 +1056,9 @@ packages: flutter_mwebd: dependency: "direct main" description: - name: flutter_mwebd - sha256: "14f2a331b2621b78ddf62081ca8a466f6a2b4352a66950fffd68615c14e63edf" - url: "https://pub.dev" - source: hosted + path: "/Users/user/src/stack_wallet/flutter_mwebd" + relative: false + source: path version: "0.0.1-pre.11" flutter_native_splash: dependency: "direct main" From 3c46c81ffc9a023d6139bd2103e9c11f6bed5909 Mon Sep 17 00:00:00 2001 From: sneurlax Date: Sat, 22 Aug 2026 06:32:06 -0500 Subject: [PATCH 5/5] fix(ios): pin simulator dependencies --- docs/building.md | 21 +++--------- pubspec.lock | 32 ++++++++++++------- .../templates/pubspec.template.yaml | 23 +++++++++++++ 3 files changed, 48 insertions(+), 28 deletions(-) diff --git a/docs/building.md b/docs/building.md index d6c6b4fd8d..ac8c6930c3 100644 --- a/docs/building.md +++ b/docs/building.md @@ -286,22 +286,11 @@ if `xcodebuild` reports no available simulator destinations or "iOS is not installed", install the matching simulator runtime with `xcodebuild -downloadPlatform iOS`. -The simulator-enabled forks of `flutter_mwebd`, -`cs_monero_flutter_libs_ios`, `cs_wownero_flutter_libs_ios`, and -`flutter_libsparkmobile` are wired in with `dependency_overrides` in the -(generated, untracked) `pubspec.yaml`, e.g. as sibling checkouts: - -```yaml -dependency_overrides: - flutter_mwebd: - path: ../flutter_mwebd - cs_monero_flutter_libs_ios: - path: ../cs_monero/cs_monero_flutter_libs_ios - cs_wownero_flutter_libs_ios: - path: ../cs_wownero/cs_wownero_flutter_libs_ios - flutter_libsparkmobile: - path: ../flutter_libsparkmobile-ios-sim -``` +The simulator-enabled `flutter_mwebd`, `cs_monero_flutter_libs_ios`, and +`cs_wownero_flutter_libs_ios` changes are pinned to their review commits in +the app-config template. Update those refs to their merged commits or package +releases before readying this PR. `flutter_libsparkmobile` already ships its +simulator slice and needs no local override. Then run against a booted simulator as usual (`flutter run`). diff --git a/pubspec.lock b/pubspec.lock index 90d8d7e302..9a2cecefaa 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -479,9 +479,11 @@ packages: cs_monero_flutter_libs_ios: dependency: "direct overridden" description: - path: "/Users/user/src/stack_wallet/cs_monero/cs_monero_flutter_libs_ios" - relative: false - source: path + path: cs_monero_flutter_libs_ios + ref: d89ab9f9bc18fa610c8bd629ad8fbbfc7a0c6d5b + resolved-ref: d89ab9f9bc18fa610c8bd629ad8fbbfc7a0c6d5b + url: "https://github.com/cypherstack/cs_monero" + source: git version: "1.0.0" cs_monero_flutter_libs_linux: dependency: transitive @@ -654,9 +656,11 @@ packages: cs_wownero_flutter_libs_ios: dependency: "direct overridden" description: - path: "/Users/user/src/stack_wallet/cs_wownero/cs_wownero_flutter_libs_ios" - relative: false - source: path + path: cs_wownero_flutter_libs_ios + ref: 8cf5b879126dd8f11bde632ef8e7d2f088d95988 + resolved-ref: 8cf5b879126dd8f11bde632ef8e7d2f088d95988 + url: "https://github.com/cypherstack/cs_wownero" + source: git version: "1.3.0" cs_wownero_flutter_libs_linux: dependency: transitive @@ -1017,9 +1021,11 @@ packages: flutter_libsparkmobile: dependency: "direct main" description: - path: "/Users/user/src/stack_wallet/flutter_libsparkmobile-ios-sim" - relative: false - source: path + path: "." + ref: "783bd00f0114b007f7ef97017cd10ad263ed452c" + resolved-ref: "783bd00f0114b007f7ef97017cd10ad263ed452c" + url: "https://github.com/cypherstack/flutter_libsparkmobile.git" + source: git version: "0.1.0" flutter_lints: dependency: "direct dev" @@ -1056,9 +1062,11 @@ packages: flutter_mwebd: dependency: "direct main" description: - path: "/Users/user/src/stack_wallet/flutter_mwebd" - relative: false - source: path + path: "." + ref: 17dc80f56abd055c96b4e064b7bb6e06f1ef8233 + resolved-ref: 17dc80f56abd055c96b4e064b7bb6e06f1ef8233 + url: "https://github.com/cypherstack/flutter_mwebd" + source: git version: "0.0.1-pre.11" flutter_native_splash: dependency: "direct main" diff --git a/scripts/app_config/templates/pubspec.template.yaml b/scripts/app_config/templates/pubspec.template.yaml index 61556b0174..a26144480e 100644 --- a/scripts/app_config/templates/pubspec.template.yaml +++ b/scripts/app_config/templates/pubspec.template.yaml @@ -356,6 +356,29 @@ dependency_overrides: freezed: ^3.1.0 freezed_annotation: ^3.1.0 +# %%ENABLE_XMR%% +# cs_monero_flutter_libs_ios: +# git: +# url: https://github.com/cypherstack/cs_monero +# path: cs_monero_flutter_libs_ios +# ref: d89ab9f9bc18fa610c8bd629ad8fbbfc7a0c6d5b +# %%END_ENABLE_XMR%% + +# %%ENABLE_WOW%% +# cs_wownero_flutter_libs_ios: +# git: +# url: https://github.com/cypherstack/cs_wownero +# path: cs_wownero_flutter_libs_ios +# ref: 8cf5b879126dd8f11bde632ef8e7d2f088d95988 +# %%END_ENABLE_WOW%% + +# %%ENABLE_MWEBD%% +# flutter_mwebd: +# git: +# url: https://github.com/cypherstack/flutter_mwebd +# ref: 17dc80f56abd055c96b4e064b7bb6e06f1ef8233 +# %%END_ENABLE_MWEBD%% + # %%ENABLE_ISAR%% # isar_community: # git: