From 7aa63ef33493e7db82a5068556e3d20929610979 Mon Sep 17 00:00:00 2001 From: Tom Brow Date: Tue, 20 Oct 2026 11:17:29 -0700 Subject: [PATCH] fix(ios): preserve signing exports through archive stripping Signed-off-by: Tom Brow --- .github/workflows/_ci-clients.yml | 6 +++++- mobile/ios/Flutter/Release.xcconfig | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) 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