Repository navigation
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 <[email protected]>
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 [email protected] Add oval drawing support to the SDF uber shader (flutter/flutter#184903) 2026-04-16 [email protected] Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (flutter/flutter#185083) 2026-04-16 [email protected] Roll Skia from 2c49b3f9c3c2 to 391cdbe3ffe9 (2 revisions) (flutter/flutter#185138) 2026-04-16 [email protected] Roll Dart SDK from 4ee990654146 to fbddcbe0cd96 (1 revision) (flutter/flutter#185137) 2026-04-16 [email protected] Roll Skia from f4e3cd2c2159 to 2c49b3f9c3c2 (14 revisions) (flutter/flutter#185131) 2026-04-16 [email protected] Roll Dart SDK from 87b7c87e7207 to 4ee990654146 (5 revisions) (flutter/flutter#185108) 2026-04-15 [email protected] Use the `flutteractionsbot` token to push the release branch. (flutter/flutter#184833) 2026-04-15 [email protected] Allow period characters in iOS and macOS framework names (flutter/flutter#184335) 2026-04-15 [email protected] Fix SliverResizingHeader semantic focus (flutter/flutter#179690) 2026-04-15 [email protected] ignore avoid_type_to_string lint rule in flutter_tools (flutter/flutter#184766) 2026-04-15 [email protected] Roll Skia from bda7232e6772 to f4e3cd2c2159 (4 revisions) (flutter/flutter#185063) 2026-04-15 [email protected] Add initial AI guidance for issues (flutter/flutter#184885) 2026-04-15 [email protected] Roll Fuchsia Linux SDK from rB8LAuZL_DwHMssTU... to IdBT8fSMYrYSip65j... (flutter/flutter#185064) 2026-04-15 [email protected] 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 [email protected] Agent rule: Dart editing (flutter/flutter#185045) 2026-04-15 [email protected] [ios][platform_view]Reland hitTest approach (with a few 2026 update) (flutter/flutter#183484) 2026-04-15 [email protected] Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (flutter/flutter#179810) 2026-04-15 [email protected] Roll Dart SDK from ee5afcef0596 to 87b7c87e7207 (4 revisions) (flutter/flutter#185060) 2026-04-15 [email protected] Roll Skia from 4c382df6a25a to bda7232e6772 (7 revisions) (flutter/flutter#185057) 2026-04-15 [email protected] 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 [email protected] refactor: Remove material imports from Widget tests (flutter/flutter#184877) 2026-04-14 [email protected] Adds missing `await`s on forgotten cases (flutter/flutter#183466) 2026-04-14 [email protected] Use an if-element in a collection literal instead of a conditional expression (flutter/flutter#184830) 2026-04-14 [email protected] update popular issues documentation (flutter/flutter#183196) 2026-04-14 [email protected] [Android] Add integration test for setting engine flags via the manifest (flutter/flutter#182241) 2026-04-14 [email protected] [fuchsia] Ask for both ambient-replace and VMEX to allow for a softer transition. (flutter/flutter#185042) 2026-04-14 [email protected] Make `multiple_windows` follow repo analyzer rules (flutter/flutter#184753) 2026-04-14 [email protected] Ignore incoming deprecated_web_configuration lint (flutter/flutter#184130) 2026-04-14 [email protected] [AGP 9] Update AGP Error (flutter/flutter#185043) 2026-04-14 [email protected] Move widget_preview_scaffold into pub workspace (flutter/flutter#182627) 2026-04-14 [email protected] Fix gles interactive tests (flutter/flutter#181389) 2026-04-14 [email protected] Update customer tests.version (flutter/flutter#185044) 2026-04-14 [email protected] [SKILL] upgrade-browser (flutter/flutter#184894) 2026-04-14 [email protected] [ci] Split up integration.shard dart_data_asset_test.dart (flutter/flutter#185021) 2026-04-14 [email protected] Hold startup lock until after `pub get` to prevent races (flutter/flutter#184294) 2026-04-14 6226493[email protected] Add `--include-example` flag to `flutter clean` for package example projects (flutter/flutter#183455) 2026-04-14 [email protected] Disable multi-pack-index when calling flutter from Xcode (flutter/flutter#184998) 2026-04-14 [email protected] Fix icon tree shaking when building for desktop (flutter/flutter#184249) 2026-04-14 [email protected] Fix killing wrong xcrun command (flutter/flutter#184831) 2026-04-14 [email protected] Allow Xcode build configuration to not contain flavor name (flutter/flutter#183398) 2026-04-14 [email protected] [web] Async rendering for benchmarks (flutter/flutter#184677) 2026-04-14 [email protected] [ci] Split up integration.shard native_assets_test.dart (flutter/flutter#185020) 2026-04-14 [email protected] 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 [email protected] Add oval drawing support to the SDF uber shader (flutter/flutter#184903) 2026-04-16 [email protected] Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (flutter/flutter#185083) 2026-04-16 [email protected] Roll Skia from 2c49b3f9c3c2 to 391cdbe3ffe9 (2 revisions) (flutter/flutter#185138) 2026-04-16 [email protected] Roll Dart SDK from 4ee990654146 to fbddcbe0cd96 (1 revision) (flutter/flutter#185137) 2026-04-16 [email protected] Roll Skia from f4e3cd2c2159 to 2c49b3f9c3c2 (14 revisions) (flutter/flutter#185131) 2026-04-16 [email protected] Roll Dart SDK from 87b7c87e7207 to 4ee990654146 (5 revisions) (flutter/flutter#185108) 2026-04-15 [email protected] Use the `flutteractionsbot` token to push the release branch. (flutter/flutter#184833) 2026-04-15 [email protected] Allow period characters in iOS and macOS framework names (flutter/flutter#184335) 2026-04-15 [email protected] Fix SliverResizingHeader semantic focus (flutter/flutter#179690) 2026-04-15 [email protected] ignore avoid_type_to_string lint rule in flutter_tools (flutter/flutter#184766) 2026-04-15 [email protected] Roll Skia from bda7232e6772 to f4e3cd2c2159 (4 revisions) (flutter/flutter#185063) 2026-04-15 [email protected] Add initial AI guidance for issues (flutter/flutter#184885) 2026-04-15 [email protected] Roll Fuchsia Linux SDK from rB8LAuZL_DwHMssTU... to IdBT8fSMYrYSip65j... (flutter/flutter#185064) 2026-04-15 [email protected] 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 [email protected] Agent rule: Dart editing (flutter/flutter#185045) 2026-04-15 [email protected] [ios][platform_view]Reland hitTest approach (with a few 2026 update) (flutter/flutter#183484) 2026-04-15 [email protected] Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (flutter/flutter#179810) 2026-04-15 [email protected] Roll Dart SDK from ee5afcef0596 to 87b7c87e7207 (4 revisions) (flutter/flutter#185060) 2026-04-15 [email protected] Roll Skia from 4c382df6a25a to bda7232e6772 (7 revisions) (flutter/flutter#185057) 2026-04-15 [email protected] 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 [email protected] refactor: Remove material imports from Widget tests (flutter/flutter#184877) 2026-04-14 [email protected] Adds missing `await`s on forgotten cases (flutter/flutter#183466) 2026-04-14 [email protected] Use an if-element in a collection literal instead of a conditional expression (flutter/flutter#184830) 2026-04-14 [email protected] update popular issues documentation (flutter/flutter#183196) 2026-04-14 [email protected] [Android] Add integration test for setting engine flags via the manifest (flutter/flutter#182241) 2026-04-14 [email protected] [fuchsia] Ask for both ambient-replace and VMEX to allow for a softer transition. (flutter/flutter#185042) 2026-04-14 [email protected] Make `multiple_windows` follow repo analyzer rules (flutter/flutter#184753) 2026-04-14 [email protected] Ignore incoming deprecated_web_configuration lint (flutter/flutter#184130) 2026-04-14 [email protected] [AGP 9] Update AGP Error (flutter/flutter#185043) 2026-04-14 [email protected] Move widget_preview_scaffold into pub workspace (flutter/flutter#182627) 2026-04-14 [email protected] Fix gles interactive tests (flutter/flutter#181389) 2026-04-14 [email protected] Update customer tests.version (flutter/flutter#185044) 2026-04-14 [email protected] [SKILL] upgrade-browser (flutter/flutter#184894) 2026-04-14 [email protected] [ci] Split up integration.shard dart_data_asset_test.dart (flutter/flutter#185021) 2026-04-14 [email protected] Hold startup lock until after `pub get` to prevent races (flutter/flutter#184294) 2026-04-14 6226493[email protected] Add `--include-example` flag to `flutter clean` for package example projects (flutter/flutter#183455) 2026-04-14 [email protected] Disable multi-pack-index when calling flutter from Xcode (flutter/flutter#184998) 2026-04-14 [email protected] Fix icon tree shaking when building for desktop (flutter/flutter#184249) 2026-04-14 [email protected] Fix killing wrong xcrun command (flutter/flutter#184831) 2026-04-14 [email protected] Allow Xcode build configuration to not contain flavor name (flutter/flutter#183398) 2026-04-14 [email protected] [web] Async rendering for benchmarks (flutter/flutter#184677) 2026-04-14 [email protected] [ci] Split up integration.shard native_assets_test.dart (flutter/flutter#185020) 2026-04-14 [email protected] 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 [email protected] Add oval drawing support to the SDF uber shader (flutter/flutter#184903) 2026-04-16 [email protected] Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (flutter/flutter#185083) 2026-04-16 [email protected] Roll Skia from 2c49b3f9c3c2 to 391cdbe3ffe9 (2 revisions) (flutter/flutter#185138) 2026-04-16 [email protected] Roll Dart SDK from 4ee990654146 to fbddcbe0cd96 (1 revision) (flutter/flutter#185137) 2026-04-16 [email protected] Roll Skia from f4e3cd2c2159 to 2c49b3f9c3c2 (14 revisions) (flutter/flutter#185131) 2026-04-16 [email protected] Roll Dart SDK from 87b7c87e7207 to 4ee990654146 (5 revisions) (flutter/flutter#185108) 2026-04-15 [email protected] Use the `flutteractionsbot` token to push the release branch. (flutter/flutter#184833) 2026-04-15 [email protected] Allow period characters in iOS and macOS framework names (flutter/flutter#184335) 2026-04-15 [email protected] Fix SliverResizingHeader semantic focus (flutter/flutter#179690) 2026-04-15 [email protected] ignore avoid_type_to_string lint rule in flutter_tools (flutter/flutter#184766) 2026-04-15 [email protected] Roll Skia from bda7232e6772 to f4e3cd2c2159 (4 revisions) (flutter/flutter#185063) 2026-04-15 [email protected] Add initial AI guidance for issues (flutter/flutter#184885) 2026-04-15 [email protected] Roll Fuchsia Linux SDK from rB8LAuZL_DwHMssTU... to IdBT8fSMYrYSip65j... (flutter/flutter#185064) 2026-04-15 [email protected] 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 [email protected] Agent rule: Dart editing (flutter/flutter#185045) 2026-04-15 [email protected] [ios][platform_view]Reland hitTest approach (with a few 2026 update) (flutter/flutter#183484) 2026-04-15 [email protected] Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (flutter/flutter#179810) 2026-04-15 [email protected] Roll Dart SDK from ee5afcef0596 to 87b7c87e7207 (4 revisions) (flutter/flutter#185060) 2026-04-15 [email protected] Roll Skia from 4c382df6a25a to bda7232e6772 (7 revisions) (flutter/flutter#185057) 2026-04-15 [email protected] 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 [email protected] refactor: Remove material imports from Widget tests (flutter/flutter#184877) 2026-04-14 [email protected] Adds missing `await`s on forgotten cases (flutter/flutter#183466) 2026-04-14 [email protected] Use an if-element in a collection literal instead of a conditional expression (flutter/flutter#184830) 2026-04-14 [email protected] update popular issues documentation (flutter/flutter#183196) 2026-04-14 [email protected] [Android] Add integration test for setting engine flags via the manifest (flutter/flutter#182241) 2026-04-14 [email protected] [fuchsia] Ask for both ambient-replace and VMEX to allow for a softer transition. (flutter/flutter#185042) 2026-04-14 [email protected] Make `multiple_windows` follow repo analyzer rules (flutter/flutter#184753) 2026-04-14 [email protected] Ignore incoming deprecated_web_configuration lint (flutter/flutter#184130) 2026-04-14 [email protected] [AGP 9] Update AGP Error (flutter/flutter#185043) 2026-04-14 [email protected] Move widget_preview_scaffold into pub workspace (flutter/flutter#182627) 2026-04-14 [email protected] Fix gles interactive tests (flutter/flutter#181389) 2026-04-14 [email protected] Update customer tests.version (flutter/flutter#185044) 2026-04-14 [email protected] [SKILL] upgrade-browser (flutter/flutter#184894) 2026-04-14 [email protected] [ci] Split up integration.shard dart_data_asset_test.dart (flutter/flutter#185021) 2026-04-14 [email protected] Hold startup lock until after `pub get` to prevent races (flutter/flutter#184294) 2026-04-14 6226493[email protected] Add `--include-example` flag to `flutter clean` for package example projects (flutter/flutter#183455) 2026-04-14 [email protected] Disable multi-pack-index when calling flutter from Xcode (flutter/flutter#184998) 2026-04-14 [email protected] Fix icon tree shaking when building for desktop (flutter/flutter#184249) 2026-04-14 [email protected] Fix killing wrong xcrun command (flutter/flutter#184831) 2026-04-14 [email protected] Allow Xcode build configuration to not contain flavor name (flutter/flutter#183398) 2026-04-14 [email protected] [web] Async rendering for benchmarks (flutter/flutter#184677) 2026-04-14 [email protected] [ci] Split up integration.shard native_assets_test.dart (flutter/flutter#185020) 2026-04-14 [email protected] 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
///).