Update iOS tools to fat binaries#185868
Conversation
|
I ran this five times and it's passing successfully: https://ci.chromium.org/b/8683046624650305553 |
There was a problem hiding this comment.
Code Review
This pull request updates the CI configuration with a specific OSX SDK version and introduces a verification step to ensure that binaries are 'fat' binaries containing both x86_64 and arm64 architectures. Additionally, it updates the artifact download path for iOS USB dependencies and adds corresponding unit tests. Feedback focuses on improving the robustness of the new verification logic by including stderr in error logs and refining the parsing of the 'file' command output to avoid false positives.
| $flutter/osx_sdk : >- | ||
| { | ||
| "sdk_version": "16c5032a" | ||
| } |
There was a problem hiding this comment.
The error from #185384 was caused by idevicesyslog, which we don't use with Xcode 26 (we use LLDB/devicectl). So I'm marking this test specifically for Xcode 16 so we can verify it passes consistently.
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request. ### Issue Link: What is the link to the issue this cherry-pick is addressing? #121178 ### Impact Description: What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping of production apps (the app crashes on launch). This information is for domain experts and release engineers to understand the consequences of saying yes or no to the cherry pick. This build iOS tooling as fat binaries (arm and x86) so that is no longer requires Rosetta. Rosetta is being sunset and Apple is apparently already showing warnings when x86 binaries are used with Rosetta: https://www.macrumors.com/2026/02/16/macos-tahoe-26-4-rosetta-2-warnings/ ### Changelog Description: Explain this cherry pick: * In one line that is accessible to most Flutter developers. * That describes the state prior to the fix. * That includes which platforms are impacted. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples. [flutter/121178] When running your app on a physical iOS device, binary tools used to deploy the app are only built with x86 and therefore require Rosetta. ### Workaround: Is there a workaround for this issue? Ignore warnings ### Risk: What is the risk level of this cherry-pick? ### Test Coverage: Are you confident that your fix is well-tested by automated tests? ### Validation Steps: What are the steps to validate that this fix works? Run and deploy to an iOS device (validated by CI)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request. ### Issue Link: What is the link to the issue this cherry-pick is addressing? #121178 ### Impact Description: What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping of production apps (the app crashes on launch). This information is for domain experts and release engineers to understand the consequences of saying yes or no to the cherry pick. This build iOS tooling as fat binaries (arm and x86) so that is no longer requires Rosetta. Rosetta is being sunset and Apple is apparently already showing warnings when x86 binaries are used with Rosetta: https://www.macrumors.com/2026/02/16/macos-tahoe-26-4-rosetta-2-warnings/ ### Changelog Description: Explain this cherry pick: * In one line that is accessible to most Flutter developers. * That describes the state prior to the fix. * That includes which platforms are impacted. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples. [flutter/121178] When running your app on a physical iOS device, binary tools used to deploy the app are only built with x86 and therefore require Rosetta. ### Workaround: Is there a workaround for this issue? Ignore warnings ### Risk: What is the risk level of this cherry-pick? ### Test Coverage: Are you confident that your fix is well-tested by automated tests? ### Validation Steps: What are the steps to validate that this fix works? Run and deploy to an iOS device (validated by CI)
Updates iOS tools to a new path in GCS where they are built with both x86 and arm. On ARM Apple Silicon Macs, these will run natively without requiring Rosetta.
Binaries are code-signed and fat as expected:
Fixes #121178 and #185384
Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.
If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance.
Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the
gemini-code-assistbot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.