diff --git a/.github/workflows/_ci-clients.yml b/.github/workflows/_ci-clients.yml index dd75ea7ed0..e6afe287b2 100644 --- a/.github/workflows/_ci-clients.yml +++ b/.github/workflows/_ci-clients.yml @@ -256,7 +256,11 @@ jobs: cd mobile && flutter build ios --release --no-codesign --no-pub # Flutter does not support Release mode on the simulator. Check the # actual device Release executable's exported symbols separately. - nm -gU build/ios/iphoneos/Buzz.app/Buzz > /tmp/buzz-release-symbols + # Archive applies install-time stripping that a plain build omits. + xcodebuild -workspace ios/Runner.xcworkspace -scheme Runner \ + -configuration Release -destination 'generic/platform=iOS' \ + -archivePath /tmp/BuzzSigning.xcarchive CODE_SIGNING_ALLOWED=NO archive + nm -gU /tmp/BuzzSigning.xcarchive/Products/Applications/Buzz.app/Buzz > /tmp/buzz-release-symbols for symbol in buzz_signer_create buzz_signer_sign buzz_signer_destroy; do grep -Eq "[[:space:]]_${symbol}$" /tmp/buzz-release-symbols done diff --git a/mobile/ios/Flutter/Release.xcconfig b/mobile/ios/Flutter/Release.xcconfig index fe283176be..0f58850cd5 100644 --- a/mobile/ios/Flutter/Release.xcconfig +++ b/mobile/ios/Flutter/Release.xcconfig @@ -20,3 +20,6 @@ BUZZ_APP_ATTEST_ENVIRONMENT = production // Keep the Dart FFI entry points visible in the app executable. OTHER_LDFLAGS = $(inherited) -Wl,-u,_buzz_signer_create -Wl,-u,_buzz_signer_sign -Wl,-u,_buzz_signer_destroy + +// Preserve runtime-looked-up FFI exports during archive/install stripping. +STRIP_STYLE = non-global