From 46159fcf916691217ce6520735997b881be8d8d4 Mon Sep 17 00:00:00 2001 From: Tom Brow Date: Thu, 15 Oct 2026 17:32:31 -0700 Subject: [PATCH] fix(ios): respect app minimum in generated CocoaPods targets (#8379) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Xcode 27 rejects generated CocoaPods targets with deployment versions below iOS 15, even though the app already requires iOS 16. Raise lower explicit pod deployment targets to the existing iOS 16 minimum during installation, preserving targets that require a newer version. ### Validation On main at 7852b1670, the ordinary unsigned Release build with exact Xcode 27.0 failed on pod targets set to iOS 9–13. After this change and a normal pod install, none of the 189 generated build configurations specifies a target below iOS 16, and the same build passes deployment-target validation without a command-line override. The full build remains blocked by the independent swift-secp256k1 0.21.1 `UInt256.words` compiler ambiguity. This PR does not fix or change that dependency. Xcode pin [buzz-releases#110](https://github.com/squareup/buzz-releases/pull/110) remains gated on a complete ordinary release build and its other prerequisites. Related: Wes’s [PR #8330](https://github.com/block/buzz/pull/8330) independently includes a similar Podfile fix alongside DeviceHub changes. This PR contains only the Podfile floor and its lockfile checksum. Full local `just ci` passed; focused iOS validation above is complete. The regenerated lockfile changes only the Podfile checksum; `pod install --deployment` succeeds with CocoaPods 1.16.2. --------- Signed-off-by: Tom Brow --- mobile/ios/Podfile | 7 +++++++ mobile/ios/Podfile.lock | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/mobile/ios/Podfile b/mobile/ios/Podfile index 901ba5aaa1..ff3742742e 100644 --- a/mobile/ios/Podfile +++ b/mobile/ios/Podfile @@ -38,6 +38,13 @@ end post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) + target.build_configurations.each do |config| + minimum = Gem::Version.new('16.0') + current = config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] + if current && Gem::Version.new(current) < minimum + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = minimum.to_s + end + end end # Flutter creates plugin symlinks during installation, so load the upstream # helper here rather than requiring an existing Pods install at parse time. diff --git a/mobile/ios/Podfile.lock b/mobile/ios/Podfile.lock index e25ae22ac6..0384f7355d 100644 --- a/mobile/ios/Podfile.lock +++ b/mobile/ios/Podfile.lock @@ -227,6 +227,6 @@ SPEC CHECKSUMS: url_launcher_ios: 7a95fa5b60cc718a708b8f2966718e93db0cef1b video_player_avfoundation: dd410b52df6d2466a42d28550e33e4146928280a -PODFILE CHECKSUM: 3aac4aa13c3166f951fe137719268b7dc62b9110 +PODFILE CHECKSUM: ed10001903303a0ae660957e1d727012a3136046 COCOAPODS: 1.16.2