Skip to content

Update iOS tools to fat binaries#185868

Merged
auto-submit[bot] merged 3 commits into
flutter:masterfrom
vashworth:arm_ios_tools
May 1, 2026
Merged

Update iOS tools to fat binaries#185868
auto-submit[bot] merged 3 commits into
flutter:masterfrom
vashworth:arm_ios_tools

Conversation

@vashworth

Copy link
Copy Markdown
Contributor

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:

SHARD=verify_binaries_pre_codesigned bin/cache/dart-sdk/bin/dart dev/bots/test.dart
▌20:17:40▐ STARTING ANALYSIS
▌20:17:41▐ SHARD=verify_binaries_pre_codesigned
▌20:17:41▐ Running binaries codesign verification
▌20:18:30▐ Test successful.

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-assist bot 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.

@flutter-dashboard flutter-dashboard Bot added the CICD Run CI/CD label May 1, 2026
@github-actions github-actions Bot added the tool Affects the "flutter" command-line tool. See also t: labels. label May 1, 2026
@vashworth vashworth changed the title Arm ios tools Update iOS tools to fat binaries May 1, 2026
@vashworth

Copy link
Copy Markdown
Contributor Author

@vashworth vashworth marked this pull request as ready for review May 1, 2026 15:07
@vashworth vashworth requested a review from jmagman May 1, 2026 15:08

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread dev/bots/suite_runners/run_verify_binaries_codesigned_tests.dart Outdated
Comment thread dev/bots/suite_runners/run_verify_binaries_codesigned_tests.dart
Comment thread .ci.yaml
$flutter/osx_sdk : >-
{
"sdk_version": "16c5032a"
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@github-actions github-actions Bot removed the CICD Run CI/CD label May 1, 2026
@vashworth vashworth added the CICD Run CI/CD label May 1, 2026
@vashworth vashworth requested a review from jtmcdole May 1, 2026 18:04
@vashworth vashworth added the cp: stable cherry pick this pull request to stable release candidate branch label May 4, 2026
@vashworth vashworth mentioned this pull request May 5, 2026
4 tasks
auto-submit Bot pushed a commit that referenced this pull request May 6, 2026
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)
auto-submit Bot pushed a commit that referenced this pull request May 6, 2026
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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CICD Run CI/CD cp: beta cherry pick this pull request to beta release candidate branch cp: stable cherry pick this pull request to stable release candidate branch tool Affects the "flutter" command-line tool. See also t: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Build idevicesyslog, idevicescreenshot, and iproxy binaries and all dependent libraries with macOS arm64 and x86_64 architectures

2 participants