Allow Xcode build configuration to not contain flavor name#183398
Conversation
There was a problem hiding this comment.
Code Review
This pull request modifies the logic for selecting an Xcode build configuration to allow falling back to a configuration based on the build mode alone when a flavor-specific configuration is not found. This makes the build process more flexible for projects that don't define flavor-specific configurations. The changes are primarily in packages/flutter_tools/lib/src/ios/xcodeproj.dart, with a new test case added to verify the fallback behavior. My review includes a suggestion to refactor the new logic for better clarity and a note to remove a TODO comment.
| String? buildConfigurationFor(BuildInfo? buildInfo, String scheme) { | ||
| if (buildInfo == null) { | ||
| return null; | ||
| } | ||
| final String expectedConfiguration = expectedBuildConfigurationFor(buildInfo, scheme); | ||
| final String? buildConfigurationForBuildMode = _existingBuildConfigurationForBuildMode( | ||
| expectedConfiguration, | ||
| ); | ||
| if (buildConfigurationForBuildMode != null) { | ||
| return buildConfigurationForBuildMode; | ||
| final String? exactMatch = _existingBuildConfigurationForBuildMode(expectedConfiguration); | ||
| if (exactMatch != null) { | ||
| return exactMatch; | ||
| } | ||
| final String baseConfiguration = _baseConfigurationFor(buildInfo); | ||
| return _uniqueMatch(buildConfigurations, (String candidate) { | ||
| final String? buildConfigurationForBuildModeAndFlavor = _uniqueMatch(buildConfigurations, ( | ||
| String candidate, | ||
| ) { | ||
| candidate = candidate.toLowerCase(); | ||
| if (buildInfo.flavor == null) { | ||
| return candidate == expectedConfiguration.toLowerCase(); | ||
| } | ||
| return candidate.contains(baseConfiguration.toLowerCase()) && | ||
| candidate.contains(scheme.toLowerCase()); | ||
| }); | ||
| return buildConfigurationForBuildModeAndFlavor ?? | ||
| _existingBuildConfigurationForBuildMode(baseConfiguration); | ||
| } |
There was a problem hiding this comment.
The logic here can be slightly refactored for improved clarity and to avoid a potentially redundant call to _existingBuildConfigurationForBuildMode. The current implementation is correct, but this change makes the different matching strategies more explicit and avoids re-checking for a base configuration match when no flavor is present.
String? buildConfigurationFor(BuildInfo? buildInfo, String scheme) {
if (buildInfo == null) {
return null;
}
// Check for an exact match, e.g. "Debug-MyFlavor".
final String expectedConfiguration = expectedBuildConfigurationFor(buildInfo, scheme);
final String? exactMatch = _existingBuildConfigurationForBuildMode(expectedConfiguration);
if (exactMatch != null) {
return exactMatch;
}
final String baseConfiguration = _baseConfigurationFor(buildInfo);
// Check for a unique match for build mode and flavor, e.g. "debug myflavor".
final String? buildConfigurationForBuildModeAndFlavor = _uniqueMatch(buildConfigurations, (
String candidate,
) {
candidate = candidate.toLowerCase();
return candidate.contains(baseConfiguration.toLowerCase()) &&
candidate.contains(scheme.toLowerCase());
});
if (buildConfigurationForBuildModeAndFlavor != null) {
return buildConfigurationForBuildModeAndFlavor;
}
// If there was no flavor, we already checked for the base configuration as `exactMatch`.
if (buildInfo.flavor == null) {
return null;
}
// Fallback to build mode only, e.g. "Debug".
return _existingBuildConfigurationForBuildMode(baseConfiguration);
}References
- The suggested refactoring improves readability by making the different matching strategies more explicit, which aligns with the style guide's principle to 'Optimize for readability'. (link)
There was a problem hiding this comment.
I think this can be further improved. This whole part
final String expectedConfiguration = expectedBuildConfigurationFor(buildInfo, scheme);
final String? exactMatch = _existingBuildConfigurationForBuildMode(expectedConfiguration);
if (exactMatch != null) {
return exactMatch;
}can be removed since an exact match will still get matched later in the method.
There was a problem hiding this comment.
The exact match check is still needed since _uniqueMatch will return null if it matches multiple and it's possible for there to be multiple configurations that contain the mode and the scheme name.
There was a problem hiding this comment.
I'm ok with leaving this part, but I feel like the current behaviour can be a bit misleading.
Consider a flavor named prod and configurations Debug-prod, DebugProd, prod debug:
Today we select Debug-prod as an exact match, but if we remove Debug-prod, then we fail, since two other configurations match. So there is no point in having multiple configurations, since we would never match DebugProd or prod debug unless they are the only configuration or named exactly Debug-prod.
vashworth
left a comment
There was a problem hiding this comment.
Overall, I think this should work.
| String? buildConfigurationFor(BuildInfo? buildInfo, String scheme) { | ||
| if (buildInfo == null) { | ||
| return null; | ||
| } | ||
| final String expectedConfiguration = expectedBuildConfigurationFor(buildInfo, scheme); | ||
| final String? buildConfigurationForBuildMode = _existingBuildConfigurationForBuildMode( | ||
| expectedConfiguration, | ||
| ); | ||
| if (buildConfigurationForBuildMode != null) { | ||
| return buildConfigurationForBuildMode; | ||
| final String? exactMatch = _existingBuildConfigurationForBuildMode(expectedConfiguration); | ||
| if (exactMatch != null) { | ||
| return exactMatch; | ||
| } | ||
| final String baseConfiguration = _baseConfigurationFor(buildInfo); | ||
| return _uniqueMatch(buildConfigurations, (String candidate) { | ||
| final String? buildConfigurationForBuildModeAndFlavor = _uniqueMatch(buildConfigurations, ( | ||
| String candidate, | ||
| ) { | ||
| candidate = candidate.toLowerCase(); | ||
| if (buildInfo.flavor == null) { | ||
| return candidate == expectedConfiguration.toLowerCase(); | ||
| } | ||
| return candidate.contains(baseConfiguration.toLowerCase()) && | ||
| candidate.contains(scheme.toLowerCase()); | ||
| }); | ||
| return buildConfigurationForBuildModeAndFlavor ?? | ||
| _existingBuildConfigurationForBuildMode(baseConfiguration); | ||
| } |
There was a problem hiding this comment.
The exact match check is still needed since _uniqueMatch will return null if it matches multiple and it's possible for there to be multiple configurations that contain the mode and the scheme name.
Let's say you have a scheme called "prod" and you misremembered it as "production". If you run |
8f6948f to
18a63e4
Compare
|
Hi @hellohuanlin! Thank you for the question. Both before and after this change the build would fail earlier, since the tool requires an exact scheme match for flavors. |
Wouldn't the new approach fallback to use just |
|
@hellohuanlin The build would fail before the build configuration logic here: flutter/packages/flutter_tools/lib/src/ios/mac.dart Lines 210 to 213 in be0b4bd In your example, the scheme is named |
2a45c1c to
b735bec
Compare
f5a6e52 to
17d4116
Compare
|
@hellohuanlin I've made the requested changes. |
|
Hi @vashworth! I have applied the suggestions you made. Would you be able to give this another review please? |
9be5338 to
08c2249
Compare
vashworth
left a comment
There was a problem hiding this comment.
LGTM. Sorry for the delay!
…83398) This PR removes the requirement from Xcode build configurations to always contain the flavor in their name. We still try to select the config that matches the buildmode and flavor, and there isn't one then we fall back to just the build mode. Alternative approach to flutter#182368 Fixes flutter#182368 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. --------- Co-authored-by: Victoria Ashworth <15619084+vashworth@users.noreply.github.com>
Roll Flutter from c1b14e92dcfb to 31f1802cb859 (46 revisions) flutter/flutter@c1b14e9...31f1802 2026-04-16 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (#185083)" (flutter/flutter#185145) 2026-04-16 evanwall@buffalo.edu Add oval drawing support to the SDF uber shader (flutter/flutter#184903) 2026-04-16 okorohelijah@google.com Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (flutter/flutter#185083) 2026-04-16 engine-flutter-autoroll@skia.org Roll Skia from 2c49b3f9c3c2 to 391cdbe3ffe9 (2 revisions) (flutter/flutter#185138) 2026-04-16 engine-flutter-autoroll@skia.org Roll Dart SDK from 4ee990654146 to fbddcbe0cd96 (1 revision) (flutter/flutter#185137) 2026-04-16 engine-flutter-autoroll@skia.org Roll Skia from f4e3cd2c2159 to 2c49b3f9c3c2 (14 revisions) (flutter/flutter#185131) 2026-04-16 engine-flutter-autoroll@skia.org Roll Dart SDK from 87b7c87e7207 to 4ee990654146 (5 revisions) (flutter/flutter#185108) 2026-04-15 jacksongardner@google.com Use the `flutteractionsbot` token to push the release branch. (flutter/flutter#184833) 2026-04-15 63195100+tjoengCRC@users.noreply.github.com Allow period characters in iOS and macOS framework names (flutter/flutter#184335) 2026-04-15 zemanux@users.noreply.github.com Fix SliverResizingHeader semantic focus (flutter/flutter#179690) 2026-04-15 srawlins@google.com ignore avoid_type_to_string lint rule in flutter_tools (flutter/flutter#184766) 2026-04-15 engine-flutter-autoroll@skia.org Roll Skia from bda7232e6772 to f4e3cd2c2159 (4 revisions) (flutter/flutter#185063) 2026-04-15 stuartmorgan@google.com Add initial AI guidance for issues (flutter/flutter#184885) 2026-04-15 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from rB8LAuZL_DwHMssTU... to IdBT8fSMYrYSip65j... (flutter/flutter#185064) 2026-04-15 jason-simmons@users.noreply.github.com Fix an ordering dependency in the services/system_chrome_test.dart test suite (flutter/flutter#185086) 2026-04-15 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[ios][platform_view]Reland hitTest approach (with a few 2026 update) (#183484)" (flutter/flutter#185082) 2026-04-15 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (#179810)" (flutter/flutter#185067) 2026-04-15 dacoharkes@google.com Agent rule: Dart editing (flutter/flutter#185045) 2026-04-15 41930132+hellohuanlin@users.noreply.github.com [ios][platform_view]Reland hitTest approach (with a few 2026 update) (flutter/flutter#183484) 2026-04-15 okorohelijah@google.com Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (flutter/flutter#179810) 2026-04-15 engine-flutter-autoroll@skia.org Roll Dart SDK from ee5afcef0596 to 87b7c87e7207 (4 revisions) (flutter/flutter#185060) 2026-04-15 engine-flutter-autoroll@skia.org Roll Skia from 4c382df6a25a to bda7232e6772 (7 revisions) (flutter/flutter#185057) 2026-04-15 brackenavaron@gmail.com Remove material import from toggleable_test.dart + draggable_test.dart + obscured_animated_image_test.dart + sliver_constraints_test.dart (flutter/flutter#181774) 2026-04-15 120367427+master-wayne7@users.noreply.github.com refactor: Remove material imports from Widget tests (flutter/flutter#184877) 2026-04-14 52160996+FMorschel@users.noreply.github.com Adds missing `await`s on forgotten cases (flutter/flutter#183466) 2026-04-14 srawlins@google.com Use an if-element in a collection literal instead of a conditional expression (flutter/flutter#184830) 2026-04-14 50643541+Mairramer@users.noreply.github.com update popular issues documentation (flutter/flutter#183196) 2026-04-14 43054281+camsim99@users.noreply.github.com [Android] Add integration test for setting engine flags via the manifest (flutter/flutter#182241) 2026-04-14 rmacnak@google.com [fuchsia] Ask for both ambient-replace and VMEX to allow for a softer transition. (flutter/flutter#185042) 2026-04-14 goderbauer@google.com Make `multiple_windows` follow repo analyzer rules (flutter/flutter#184753) 2026-04-14 58529443+srujzs@users.noreply.github.com Ignore incoming deprecated_web_configuration lint (flutter/flutter#184130) 2026-04-14 jesswon@google.com [AGP 9] Update AGP Error (flutter/flutter#185043) 2026-04-14 magder@google.com Move widget_preview_scaffold into pub workspace (flutter/flutter#182627) 2026-04-14 planetmarshall@users.noreply.github.com Fix gles interactive tests (flutter/flutter#181389) 2026-04-14 katelovett@google.com Update customer tests.version (flutter/flutter#185044) 2026-04-14 mdebbar@google.com [SKILL] upgrade-browser (flutter/flutter#184894) 2026-04-14 dacoharkes@google.com [ci] Split up integration.shard dart_data_asset_test.dart (flutter/flutter#185021) 2026-04-14 mr-peipei@web.de Hold startup lock until after `pub get` to prevent races (flutter/flutter#184294) 2026-04-14 6226493+andeart@users.noreply.github.com Add `--include-example` flag to `flutter clean` for package example projects (flutter/flutter#183455) 2026-04-14 15619084+vashworth@users.noreply.github.com Disable multi-pack-index when calling flutter from Xcode (flutter/flutter#184998) 2026-04-14 42123156+nvi9@users.noreply.github.com Fix icon tree shaking when building for desktop (flutter/flutter#184249) 2026-04-14 15619084+vashworth@users.noreply.github.com Fix killing wrong xcrun command (flutter/flutter#184831) 2026-04-14 alex.medinsh@gmail.com Allow Xcode build configuration to not contain flavor name (flutter/flutter#183398) 2026-04-14 mdebbar@google.com [web] Async rendering for benchmarks (flutter/flutter#184677) 2026-04-14 dacoharkes@google.com [ci] Split up integration.shard native_assets_test.dart (flutter/flutter#185020) 2026-04-14 737941+loic-sharma@users.noreply.github.com Skip flutter widget-preview test that times out frequently (flutter/flutter#184988) ...
…r#11518) Roll Flutter from c1b14e92dcfb to 31f1802cb859 (46 revisions) flutter/flutter@c1b14e9...31f1802 2026-04-16 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (#185083)" (flutter/flutter#185145) 2026-04-16 evanwall@buffalo.edu Add oval drawing support to the SDF uber shader (flutter/flutter#184903) 2026-04-16 okorohelijah@google.com Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (flutter/flutter#185083) 2026-04-16 engine-flutter-autoroll@skia.org Roll Skia from 2c49b3f9c3c2 to 391cdbe3ffe9 (2 revisions) (flutter/flutter#185138) 2026-04-16 engine-flutter-autoroll@skia.org Roll Dart SDK from 4ee990654146 to fbddcbe0cd96 (1 revision) (flutter/flutter#185137) 2026-04-16 engine-flutter-autoroll@skia.org Roll Skia from f4e3cd2c2159 to 2c49b3f9c3c2 (14 revisions) (flutter/flutter#185131) 2026-04-16 engine-flutter-autoroll@skia.org Roll Dart SDK from 87b7c87e7207 to 4ee990654146 (5 revisions) (flutter/flutter#185108) 2026-04-15 jacksongardner@google.com Use the `flutteractionsbot` token to push the release branch. (flutter/flutter#184833) 2026-04-15 63195100+tjoengCRC@users.noreply.github.com Allow period characters in iOS and macOS framework names (flutter/flutter#184335) 2026-04-15 zemanux@users.noreply.github.com Fix SliverResizingHeader semantic focus (flutter/flutter#179690) 2026-04-15 srawlins@google.com ignore avoid_type_to_string lint rule in flutter_tools (flutter/flutter#184766) 2026-04-15 engine-flutter-autoroll@skia.org Roll Skia from bda7232e6772 to f4e3cd2c2159 (4 revisions) (flutter/flutter#185063) 2026-04-15 stuartmorgan@google.com Add initial AI guidance for issues (flutter/flutter#184885) 2026-04-15 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from rB8LAuZL_DwHMssTU... to IdBT8fSMYrYSip65j... (flutter/flutter#185064) 2026-04-15 jason-simmons@users.noreply.github.com Fix an ordering dependency in the services/system_chrome_test.dart test suite (flutter/flutter#185086) 2026-04-15 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[ios][platform_view]Reland hitTest approach (with a few 2026 update) (#183484)" (flutter/flutter#185082) 2026-04-15 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (#179810)" (flutter/flutter#185067) 2026-04-15 dacoharkes@google.com Agent rule: Dart editing (flutter/flutter#185045) 2026-04-15 41930132+hellohuanlin@users.noreply.github.com [ios][platform_view]Reland hitTest approach (with a few 2026 update) (flutter/flutter#183484) 2026-04-15 okorohelijah@google.com Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (flutter/flutter#179810) 2026-04-15 engine-flutter-autoroll@skia.org Roll Dart SDK from ee5afcef0596 to 87b7c87e7207 (4 revisions) (flutter/flutter#185060) 2026-04-15 engine-flutter-autoroll@skia.org Roll Skia from 4c382df6a25a to bda7232e6772 (7 revisions) (flutter/flutter#185057) 2026-04-15 brackenavaron@gmail.com Remove material import from toggleable_test.dart + draggable_test.dart + obscured_animated_image_test.dart + sliver_constraints_test.dart (flutter/flutter#181774) 2026-04-15 120367427+master-wayne7@users.noreply.github.com refactor: Remove material imports from Widget tests (flutter/flutter#184877) 2026-04-14 52160996+FMorschel@users.noreply.github.com Adds missing `await`s on forgotten cases (flutter/flutter#183466) 2026-04-14 srawlins@google.com Use an if-element in a collection literal instead of a conditional expression (flutter/flutter#184830) 2026-04-14 50643541+Mairramer@users.noreply.github.com update popular issues documentation (flutter/flutter#183196) 2026-04-14 43054281+camsim99@users.noreply.github.com [Android] Add integration test for setting engine flags via the manifest (flutter/flutter#182241) 2026-04-14 rmacnak@google.com [fuchsia] Ask for both ambient-replace and VMEX to allow for a softer transition. (flutter/flutter#185042) 2026-04-14 goderbauer@google.com Make `multiple_windows` follow repo analyzer rules (flutter/flutter#184753) 2026-04-14 58529443+srujzs@users.noreply.github.com Ignore incoming deprecated_web_configuration lint (flutter/flutter#184130) 2026-04-14 jesswon@google.com [AGP 9] Update AGP Error (flutter/flutter#185043) 2026-04-14 magder@google.com Move widget_preview_scaffold into pub workspace (flutter/flutter#182627) 2026-04-14 planetmarshall@users.noreply.github.com Fix gles interactive tests (flutter/flutter#181389) 2026-04-14 katelovett@google.com Update customer tests.version (flutter/flutter#185044) 2026-04-14 mdebbar@google.com [SKILL] upgrade-browser (flutter/flutter#184894) 2026-04-14 dacoharkes@google.com [ci] Split up integration.shard dart_data_asset_test.dart (flutter/flutter#185021) 2026-04-14 mr-peipei@web.de Hold startup lock until after `pub get` to prevent races (flutter/flutter#184294) 2026-04-14 6226493+andeart@users.noreply.github.com Add `--include-example` flag to `flutter clean` for package example projects (flutter/flutter#183455) 2026-04-14 15619084+vashworth@users.noreply.github.com Disable multi-pack-index when calling flutter from Xcode (flutter/flutter#184998) 2026-04-14 42123156+nvi9@users.noreply.github.com Fix icon tree shaking when building for desktop (flutter/flutter#184249) 2026-04-14 15619084+vashworth@users.noreply.github.com Fix killing wrong xcrun command (flutter/flutter#184831) 2026-04-14 alex.medinsh@gmail.com Allow Xcode build configuration to not contain flavor name (flutter/flutter#183398) 2026-04-14 mdebbar@google.com [web] Async rendering for benchmarks (flutter/flutter#184677) 2026-04-14 dacoharkes@google.com [ci] Split up integration.shard native_assets_test.dart (flutter/flutter#185020) 2026-04-14 737941+loic-sharma@users.noreply.github.com Skip flutter widget-preview test that times out frequently (flutter/flutter#184988) ...
…r#11518) Roll Flutter from c1b14e92dcfb to 31f1802cb859 (46 revisions) flutter/flutter@c1b14e9...31f1802 2026-04-16 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (#185083)" (flutter/flutter#185145) 2026-04-16 evanwall@buffalo.edu Add oval drawing support to the SDF uber shader (flutter/flutter#184903) 2026-04-16 okorohelijah@google.com Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (flutter/flutter#185083) 2026-04-16 engine-flutter-autoroll@skia.org Roll Skia from 2c49b3f9c3c2 to 391cdbe3ffe9 (2 revisions) (flutter/flutter#185138) 2026-04-16 engine-flutter-autoroll@skia.org Roll Dart SDK from 4ee990654146 to fbddcbe0cd96 (1 revision) (flutter/flutter#185137) 2026-04-16 engine-flutter-autoroll@skia.org Roll Skia from f4e3cd2c2159 to 2c49b3f9c3c2 (14 revisions) (flutter/flutter#185131) 2026-04-16 engine-flutter-autoroll@skia.org Roll Dart SDK from 87b7c87e7207 to 4ee990654146 (5 revisions) (flutter/flutter#185108) 2026-04-15 jacksongardner@google.com Use the `flutteractionsbot` token to push the release branch. (flutter/flutter#184833) 2026-04-15 63195100+tjoengCRC@users.noreply.github.com Allow period characters in iOS and macOS framework names (flutter/flutter#184335) 2026-04-15 zemanux@users.noreply.github.com Fix SliverResizingHeader semantic focus (flutter/flutter#179690) 2026-04-15 srawlins@google.com ignore avoid_type_to_string lint rule in flutter_tools (flutter/flutter#184766) 2026-04-15 engine-flutter-autoroll@skia.org Roll Skia from bda7232e6772 to f4e3cd2c2159 (4 revisions) (flutter/flutter#185063) 2026-04-15 stuartmorgan@google.com Add initial AI guidance for issues (flutter/flutter#184885) 2026-04-15 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from rB8LAuZL_DwHMssTU... to IdBT8fSMYrYSip65j... (flutter/flutter#185064) 2026-04-15 jason-simmons@users.noreply.github.com Fix an ordering dependency in the services/system_chrome_test.dart test suite (flutter/flutter#185086) 2026-04-15 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[ios][platform_view]Reland hitTest approach (with a few 2026 update) (#183484)" (flutter/flutter#185082) 2026-04-15 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (#179810)" (flutter/flutter#185067) 2026-04-15 dacoharkes@google.com Agent rule: Dart editing (flutter/flutter#185045) 2026-04-15 41930132+hellohuanlin@users.noreply.github.com [ios][platform_view]Reland hitTest approach (with a few 2026 update) (flutter/flutter#183484) 2026-04-15 okorohelijah@google.com Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (flutter/flutter#179810) 2026-04-15 engine-flutter-autoroll@skia.org Roll Dart SDK from ee5afcef0596 to 87b7c87e7207 (4 revisions) (flutter/flutter#185060) 2026-04-15 engine-flutter-autoroll@skia.org Roll Skia from 4c382df6a25a to bda7232e6772 (7 revisions) (flutter/flutter#185057) 2026-04-15 brackenavaron@gmail.com Remove material import from toggleable_test.dart + draggable_test.dart + obscured_animated_image_test.dart + sliver_constraints_test.dart (flutter/flutter#181774) 2026-04-15 120367427+master-wayne7@users.noreply.github.com refactor: Remove material imports from Widget tests (flutter/flutter#184877) 2026-04-14 52160996+FMorschel@users.noreply.github.com Adds missing `await`s on forgotten cases (flutter/flutter#183466) 2026-04-14 srawlins@google.com Use an if-element in a collection literal instead of a conditional expression (flutter/flutter#184830) 2026-04-14 50643541+Mairramer@users.noreply.github.com update popular issues documentation (flutter/flutter#183196) 2026-04-14 43054281+camsim99@users.noreply.github.com [Android] Add integration test for setting engine flags via the manifest (flutter/flutter#182241) 2026-04-14 rmacnak@google.com [fuchsia] Ask for both ambient-replace and VMEX to allow for a softer transition. (flutter/flutter#185042) 2026-04-14 goderbauer@google.com Make `multiple_windows` follow repo analyzer rules (flutter/flutter#184753) 2026-04-14 58529443+srujzs@users.noreply.github.com Ignore incoming deprecated_web_configuration lint (flutter/flutter#184130) 2026-04-14 jesswon@google.com [AGP 9] Update AGP Error (flutter/flutter#185043) 2026-04-14 magder@google.com Move widget_preview_scaffold into pub workspace (flutter/flutter#182627) 2026-04-14 planetmarshall@users.noreply.github.com Fix gles interactive tests (flutter/flutter#181389) 2026-04-14 katelovett@google.com Update customer tests.version (flutter/flutter#185044) 2026-04-14 mdebbar@google.com [SKILL] upgrade-browser (flutter/flutter#184894) 2026-04-14 dacoharkes@google.com [ci] Split up integration.shard dart_data_asset_test.dart (flutter/flutter#185021) 2026-04-14 mr-peipei@web.de Hold startup lock until after `pub get` to prevent races (flutter/flutter#184294) 2026-04-14 6226493+andeart@users.noreply.github.com Add `--include-example` flag to `flutter clean` for package example projects (flutter/flutter#183455) 2026-04-14 15619084+vashworth@users.noreply.github.com Disable multi-pack-index when calling flutter from Xcode (flutter/flutter#184998) 2026-04-14 42123156+nvi9@users.noreply.github.com Fix icon tree shaking when building for desktop (flutter/flutter#184249) 2026-04-14 15619084+vashworth@users.noreply.github.com Fix killing wrong xcrun command (flutter/flutter#184831) 2026-04-14 alex.medinsh@gmail.com Allow Xcode build configuration to not contain flavor name (flutter/flutter#183398) 2026-04-14 mdebbar@google.com [web] Async rendering for benchmarks (flutter/flutter#184677) 2026-04-14 dacoharkes@google.com [ci] Split up integration.shard native_assets_test.dart (flutter/flutter#185020) 2026-04-14 737941+loic-sharma@users.noreply.github.com Skip flutter widget-preview test that times out frequently (flutter/flutter#184988) ...
This PR removes the requirement from Xcode build configurations to always contain the flavor in their name.
We still try to select the config that matches the buildmode and flavor, and there isn't one then we fall back to just the build mode.
Alternative approach to #182368
Fixes #182368
Pre-launch Checklist
///).