Repository navigation
Consolidate AndroidArch and DarwinArch into CpuArch - #189315
Conversation
71ca836 to
8956bae
Compare
8956bae to
45a4daa
Compare
e5e0005 to
9292ed1
Compare
|
Note that this PR is stacked on top of #189478. For easier review, please only look at the top commit. Thanks! |
There was a problem hiding this comment.
Code Review
This pull request consolidates the architecture representation in flutter_tools by replacing the platform-specific DarwinArch and AndroidArch enums with a unified CpuArch enum, updating all associated build targets, commands, devices, and tests. A review comment suggests refining an error message in android_device.dart to correctly state that the specific CPU architecture is unsupported, rather than claiming Android platforms in general are unsupported.
| case CpuArch.x86: | ||
| case CpuArch.riscv64: | ||
| case CpuArch.unknown: | ||
| _logger.printError('Android platforms are only supported.'); | ||
| return LaunchResult.failed(); |
There was a problem hiding this comment.
The error message 'Android platforms are only supported.' is misleading here because the check is performed on cpuArch (which means the platform is indeed Android, but the specific CPU architecture is unsupported).
Updating the error message to specify that the architecture is unsupported would be much more helpful and aligned with the style guide.
| case CpuArch.x86: | |
| case CpuArch.riscv64: | |
| case CpuArch.unknown: | |
| _logger.printError('Android platforms are only supported.'); | |
| return LaunchResult.failed(); | |
| case CpuArch.x86: | |
| case CpuArch.riscv64: | |
| case CpuArch.unknown: | |
| _logger.printError('Unsupported Android architecture: ${cpuArch.name}.'); | |
| return LaunchResult.failed(); |
References
- Error messages should be useful: Every error message is an opportunity to make someone love our product. (link)
| case TargetPlatform.windows_x64: | ||
| case TargetPlatform.unsupported: | ||
| final CpuArch cpuArch = await this.cpuArch; | ||
| switch (cpuArch) { |
There was a problem hiding this comment.
I feel like this could be simplified to this:
if (cpuArch case .x86 || .riscv64 || .unknown) {
_logger.printError('Android platforms are only supported.');
return LaunchResult.failed();
}There was a problem hiding this comment.
Our style guide says to use switches with no default and not ifs for enums to prevent accidentally missing new cases.
There was a problem hiding this comment.
Ugh, my bad. I can't wait for analyzer plugins to be fixed so I can look into just adding a rule for this.
There was a problem hiding this comment.
Changed this back to use a switch.
| final String localEngineName = localEngineInfo.localTargetName; | ||
| if (localEngineName.contains('_arm64')) { | ||
| return <DarwinArch>[DarwinArch.arm64]; | ||
| return <CpuArch>[CpuArch.arm64]; |
There was a problem hiding this comment.
Nit: consider using dot shorthands here and elsewhere.
| return switch (globals.os.hostPlatform) { | ||
| HostPlatform.darwin_arm64 => HostPlatform.darwin_arm64, | ||
| HostPlatform.darwin_x64 => HostPlatform.darwin_x64, | ||
| final HostPlatform unsupported => throw Exception( |
There was a problem hiding this comment.
Can this last pattern just be a wildcard?
There was a problem hiding this comment.
Done. This function is a bit weird though. I don't know why we still need this now that globals.os.hostPlatform exists. Will send a separate PR to clean this up after this PR lands.
10cd7ea to
966efb6
Compare
| case TargetPlatform.windows_x64: | ||
| case TargetPlatform.unsupported: | ||
| final CpuArch cpuArch = await this.cpuArch; | ||
| switch (cpuArch) { |
There was a problem hiding this comment.
Our style guide says to use switches with no default and not ifs for enums to prevent accidentally missing new cases.
bkonyi
left a comment
There was a problem hiding this comment.
One question, but basically LGTM!
| bool supportsRuntimeMode(BuildMode buildMode) => buildMode != BuildMode.jitRelease; | ||
|
|
||
| final DarwinArch cpuArchitecture; | ||
| final CpuArch cpuArchitecture; |
There was a problem hiding this comment.
Do we need this anymore or are we just keeping it around to keep this PR smaller? If that's the case, maybe we should add a TODO to update uses of it to cpuArch and remove it.
There was a problem hiding this comment.
Renamed this to CpuArch _cpuArch instead to make it clear that this is just the field backing Future<CpuArch> get cpuArch.
| case TargetPlatform.windows_x64: | ||
| case TargetPlatform.unsupported: | ||
| final CpuArch cpuArch = await this.cpuArch; | ||
| switch (cpuArch) { |
There was a problem hiding this comment.
Ugh, my bad. I can't wait for analyzer plugins to be fixed so I can look into just adding a rule for this.
966efb6 to
9d4eb56
Compare
|
@bkonyi would you mind taking another look at this? Thanks! |
flutter/flutter@2a2a79d...b65f4d9 2026-07-24 [email protected] Add dart_runtime_service_vm_aot.dart.snapshot to the snapshot list in the macOS code signing configuration (flutter/flutter#189981) 2026-07-24 [email protected] Roll Fuchsia Test Scripts from wLST_A-xfOeGT_5mj... to E8hJ1AfK8CtGtaES0... (flutter/flutter#189956) 2026-07-23 [email protected] Consolidate AndroidArch and DarwinArch into CpuArch (flutter/flutter#189315) 2026-07-23 [email protected] Roll Dart SDK from 9258584f98b8 to e3fc57eae9eb (7 revisions) (flutter/flutter#189949) 2026-07-23 [email protected] [flutter_tools] Do not always wait for the full timeout when running Spotlight to locate Android Studio on macOS (flutter/flutter#189952) 2026-07-23 [email protected] Roll Skia from 1d8bf9270d8c to 6e9c4687c001 (15 revisions) (flutter/flutter#189954) 2026-07-23 [email protected] [flutter_tools] Initialize Cache.flutterRoot at the start of the upgrade_test suite (flutter/flutter#189937) 2026-07-23 [email protected] Parse AndroidX property in gradle.properties (flutter/flutter#188372) 2026-07-23 [email protected] [Impeller]Use the IO context for OpenGL program setup (flutter/flutter#185723) 2026-07-23 [email protected] Allow building projects lacking Runner.xcworkspace (flutter/flutter#186239) 2026-07-23 [email protected] [flutter_tools] Invalidate WebEntrypointTarget when plugin set changes (flutter/flutter#189460) 2026-07-23 [email protected] Bump devtools_shared to 13.1.0 (flutter/flutter#189507) 2026-07-23 [email protected] forceNdkDownload should skip configuring cmake when ndk-build is used (flutter/flutter#187201) 2026-07-23 [email protected] Disable execution order shuffling for the flutter_tools upgrade_test suite (flutter/flutter#189920) 2026-07-23 [email protected] Move WindowManager outside of WidgetsApp (flutter/flutter#188866) 2026-07-23 [email protected] Roll Skia from 3424966b8a2b to 1d8bf9270d8c (3 revisions) (flutter/flutter#189901) 2026-07-23 [email protected] Roll Fuchsia Linux SDK from GswhlPRO-D1qSNclx... to 9org0yL3yZkp80x5S... (flutter/flutter#189898) 2026-07-23 [email protected] Remove outdated logs that were added to track #172636 (flutter/flutter#189282) 2026-07-23 [email protected] Roll Skia from 5e183e5aeac5 to 3424966b8a2b (33 revisions) (flutter/flutter#189890) 2026-07-23 [email protected] [examples] Use super parameters in missed spots (flutter/flutter#186194) 2026-07-23 [email protected] [flutter_tools] Bound Spotlight mdfind execution with timeout on macOS (flutter/flutter#189461) 2026-07-23 [email protected] Fix non primary buttons not being captured on windows (flutter/flutter#188394) 2026-07-22 [email protected] Listen to log reader before VM Service and make delay configurable (flutter/flutter#187202) 2026-07-22 [email protected] Roll Dart SDK from 1e65011ee004 to 9258584f98b8 (7 revisions) (flutter/flutter#189883) 2026-07-22 [email protected] Adds skill for generating engine diffs for new releases. (flutter/flutter#189869) 2026-07-22 [email protected] [ios,macos] Add Swift Sourcekit LSP support (flutter/flutter#189761) 2026-07-22 [email protected] [iOS] Mark DisplayLinkManager.shared and init() @mainactor (flutter/flutter#189815) 2026-07-22 [email protected] Fix `Rect::ExpandToMinTransformedSize` to return the input rectangle when no expansion is needed, and remove 1-pixel roundrect to rect simplification (flutter/flutter#189808) 2026-07-22 [email protected] Skip emulator.getEmulators test (flutter/flutter#189879) 2026-07-22 [email protected] Fix null terminator in input truncates clipboard (flutter/flutter#188652) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Follow up to #189207, this PR removes all usages of AndroidArch and DarwinArch, replacing them with the newly added CpuArch.