TestFlight is now opt-in (default OFF). A workflow_dispatch boolean `enable_testflight` (or the `ENABLE_TESTFLIGHT` repo variable) drives a `prepare.outputs.testflight_enabled` flag that gates the macOS app-store-pkg build leg and both testflight_ios/testflight_macos upload legs. Missing Apple signing secrets no longer fail the normal DMG/IPA release path (package-macos-app-store-pkg.sh hard-exits without them). Xcode 27 build compatibility: - Align Apple deployment targets so no pod sits below the app minimum (Xcode 27 rejects this): macOS pods + RunnerTests -> 15.6, iOS pods -> 15.5 to match the Runner targets. - Add a `lipo` shim (scripts/xcode-tools/lipo) wired onto PATH in the iOS/macOS build phases; Xcode 27 only accepts one `-verify_arch` architecture per call while Flutter passes them all at once. - macOS project hygiene: correct PrivacyInfo.xcprivacy path, set app display name + LSApplicationCategoryType. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
27 lines
718 B
Bash
Executable File
27 lines
718 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
real_lipo="$(xcrun --find lipo)"
|
|
args=("$@")
|
|
verify_index=-1
|
|
|
|
for ((index = 0; index < ${#args[@]}; index++)); do
|
|
if [[ "${args[index]}" == "-verify_arch" ]]; then
|
|
verify_index=$index
|
|
break
|
|
fi
|
|
done
|
|
|
|
# Xcode 27 accepts one architecture per -verify_arch invocation. Flutter
|
|
# passes all requested architectures at once, so verify each one separately.
|
|
if ((verify_index >= 0 && ${#args[@]} - verify_index > 2)); then
|
|
command_prefix=("${args[@]:0:verify_index}")
|
|
architectures=("${args[@]:verify_index+1}")
|
|
for architecture in "${architectures[@]}"; do
|
|
"$real_lipo" "${command_prefix[@]}" -verify_arch "$architecture"
|
|
done
|
|
exit 0
|
|
fi
|
|
|
|
exec "$real_lipo" "$@"
|