From 7c789dee09d198469bded1cb5be902eaf5562ad9 Mon Sep 17 00:00:00 2001 From: Tom Brow Date: Mon, 14 Sep 2026 15:14:06 -0700 Subject: [PATCH] Fix Apple Silicon iOS simulator builds (#7646) Apple Silicon simulator builds fail because MLImage and MLKit contain device-labelled ARM64 objects. Enable the Flutter ML Kit package's upstream compatibility helper, which restores device labels for iPhone builds. This preserves the MLKit-based functionality (avatar background removal) and complements the notification-extension linker isolation in #7187. Adds a complete iOS simulator build to CI to catch this build regression. --------- Signed-off-by: Tom Brow --- .github/workflows/_ci-clients.yml | 2 ++ Cargo.lock | 19 ++++++++++--------- desktop/src-tauri/Cargo.lock | 20 ++++++++++---------- mobile/ios/Podfile | 7 +++++++ mobile/ios/Podfile.lock | 10 +++++----- mobile/pubspec.lock | 8 ++++---- mobile/pubspec.yaml | 2 +- 7 files changed, 39 insertions(+), 29 deletions(-) diff --git a/.github/workflows/_ci-clients.yml b/.github/workflows/_ci-clients.yml index af5861e5f1..1d4f0ab50d 100644 --- a/.github/workflows/_ci-clients.yml +++ b/.github/workflows/_ci-clients.yml @@ -131,6 +131,8 @@ jobs: run: swift build -c release --package-path mobile/ios/BuzzPushKit - name: Test run: swift test --package-path mobile/ios/BuzzPushKit + - name: Build complete iOS simulator app + run: cd mobile && flutter build ios --simulator --debug --no-pub - name: Build complete unsigned iOS release run: cd mobile && flutter build ios --release --no-codesign --no-pub diff --git a/Cargo.lock b/Cargo.lock index 440ac5e4ff..e5336fb925 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -494,9 +494,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.17.0" +version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ec2f1fc3ec205783a5da9a7e6c1509cc69dedf09a1949e412c1e18469326d00" +checksum = "b281d307588d634de920874890732659e2e7672f72b5e10e81badc1a8a83621e" dependencies = [ "aws-lc-sys", "untrusted 0.7.1", @@ -505,14 +505,15 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.41.0" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a2f9779ce85b93ab6170dd940ad0169b5766ff848247aff13bb788b832fe3f4" +checksum = "9bff6c3b54fad79a2e60b8102caf565819711497c1f5f092f49508e2f5c31b27" dependencies = [ "cc", "cmake", "dunce", "fs_extra", + "pkg-config", ] [[package]] @@ -2369,7 +2370,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccc2776f0c61eca1ca32528f85548abd1a4be8fb53d1b21c013e4f18da1e7090" dependencies = [ "data-encoding", - "syn 2.0.117", + "syn 1.0.109", ] [[package]] @@ -8203,9 +8204,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.42" +version = "0.23.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c54fcab019b409d04215d3a17cb438fd7fbf192ee61461f20f4fe18704bc138" +checksum = "0d41d731c7d2f962d1ccc364cec258de3c0e93b38c2fb3ba97ac74513048d634" dependencies = [ "aws-lc-rs", "log", @@ -8268,9 +8269,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.13" +version = "0.103.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" +checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2" dependencies = [ "aws-lc-rs", "ring", diff --git a/desktop/src-tauri/Cargo.lock b/desktop/src-tauri/Cargo.lock index 6af27ee243..87d9eb1b47 100644 --- a/desktop/src-tauri/Cargo.lock +++ b/desktop/src-tauri/Cargo.lock @@ -613,9 +613,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.17.1" +version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4342d8937fc7e5dd9b1c60292261c0670c882a2cd1719cfc11b1af41731e32ad" +checksum = "b281d307588d634de920874890732659e2e7672f72b5e10e81badc1a8a83621e" dependencies = [ "aws-lc-sys", "zeroize", @@ -623,9 +623,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.42.0" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d9ceb1da931507a12f4fccea479dccd00da1943e1b4ae72d8e502d707361444" +checksum = "9bff6c3b54fad79a2e60b8102caf565819711497c1f5f092f49508e2f5c31b27" dependencies = [ "cc", "cmake", @@ -2308,7 +2308,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccc2776f0c61eca1ca32528f85548abd1a4be8fb53d1b21c013e4f18da1e7090" dependencies = [ "data-encoding", - "syn 2.0.118", + "syn 1.0.109", ] [[package]] @@ -8928,9 +8928,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.42" +version = "0.23.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c54fcab019b409d04215d3a17cb438fd7fbf192ee61461f20f4fe18704bc138" +checksum = "0d41d731c7d2f962d1ccc364cec258de3c0e93b38c2fb3ba97ac74513048d634" dependencies = [ "aws-lc-rs", "log", @@ -8993,9 +8993,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.13" +version = "0.103.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" +checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2" dependencies = [ "aws-lc-rs", "ring", @@ -10905,7 +10905,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.3", + "getrandom 0.3.4", "once_cell", "rustix 1.1.4", "windows-sys 0.61.2", diff --git a/mobile/ios/Podfile b/mobile/ios/Podfile index 8eaadb0578..901ba5aaa1 100644 --- a/mobile/ios/Podfile +++ b/mobile/ios/Podfile @@ -39,4 +39,11 @@ post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) end + # Flutter creates plugin symlinks during installation, so load the upstream + # helper here rather than requiring an existing Pods install at parse time. + require File.expand_path( + '.symlinks/plugins/google_mlkit_commons/ios/scripts/apple_silicon_simulator', + __dir__, + ) + mlkit_apple_silicon_simulator_patch(installer) end diff --git a/mobile/ios/Podfile.lock b/mobile/ios/Podfile.lock index 4a8911b5c4..e25ae22ac6 100644 --- a/mobile/ios/Podfile.lock +++ b/mobile/ios/Podfile.lock @@ -15,10 +15,10 @@ PODS: - flutter_secure_storage_darwin (10.0.0): - Flutter - FlutterMacOS - - google_mlkit_commons (0.11.1): + - google_mlkit_commons (0.12.0): - Flutter - MLKitVision (~> 10.0.0) - - google_mlkit_selfie_segmentation (0.10.1): + - google_mlkit_selfie_segmentation (0.11.0): - Flutter - google_mlkit_commons - GoogleMLKit/SegmentationSelfie (~> 9.0.0) @@ -199,8 +199,8 @@ SPEC CHECKSUMS: file_selector_ios: ec57ec07954363dd730b642e765e58f199bb621a Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 flutter_secure_storage_darwin: acdb3f316ed05a3e68f856e0353b133eec373a23 - google_mlkit_commons: a5e4ffae5bc59ea4c7b9025dc72cb6cb79dc1166 - google_mlkit_selfie_segmentation: 0317616b7e460f242bd13a805b70f4e0ba636336 + google_mlkit_commons: b4dfe2f6ae4cbf24010dc6640a28984d01343c86 + google_mlkit_selfie_segmentation: 7fc41b3ef8ba238abf8dc76724da50e44de8aaf0 GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 GoogleMLKit: b1eee21a41c57704fe72483b15c85cb2c0cd7444 GoogleToolboxForMac: d1a2cbf009c453f4d6ded37c105e2f67a32206d8 @@ -227,6 +227,6 @@ SPEC CHECKSUMS: url_launcher_ios: 7a95fa5b60cc718a708b8f2966718e93db0cef1b video_player_avfoundation: dd410b52df6d2466a42d28550e33e4146928280a -PODFILE CHECKSUM: bd29822c3d5baf6b44b726f00ea3293a19339ef2 +PODFILE CHECKSUM: 3aac4aa13c3166f951fe137719268b7dc62b9110 COCOAPODS: 1.16.2 diff --git a/mobile/pubspec.lock b/mobile/pubspec.lock index 0632d4a8df..76e9e9d6d4 100644 --- a/mobile/pubspec.lock +++ b/mobile/pubspec.lock @@ -604,18 +604,18 @@ packages: dependency: transitive description: name: google_mlkit_commons - sha256: "3e69fea4211727732cc385104e675ad1e40b29f12edd492ee52fa108423a6124" + sha256: c7fc384bdb66c3b83e24e3a41818e61d7a378d900f65f5e775344fbca95a0917 url: "https://pub.dev" source: hosted - version: "0.11.1" + version: "0.12.0" google_mlkit_selfie_segmentation: dependency: "direct main" description: name: google_mlkit_selfie_segmentation - sha256: "1688273f3bd9d3c78cdb6f4136c2b2c40c7013bd53d56392c0d52a84cdf3cb29" + sha256: "97b5030a066db72321395aded9fef0a12ba6afc182579280674c2443818c732a" url: "https://pub.dev" source: hosted - version: "0.10.1" + version: "0.11.0" gpt_markdown: dependency: "direct main" description: diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml index e6806b29d1..f4f0bcac7a 100644 --- a/mobile/pubspec.yaml +++ b/mobile/pubspec.yaml @@ -35,7 +35,7 @@ dependencies: camera: ^0.12.0+2 image_picker: ^1.1.2 image: ^4.8.0 - google_mlkit_selfie_segmentation: ^0.10.1 + google_mlkit_selfie_segmentation: ^0.11.0 photo_manager: ^3.11.0 video_player: ^2.10.1 just_audio: ^0.10.6