Skip to content

Warn about slow SwiftPM downloads and centralize SwiftPM cache#183747

Merged
auto-submit[bot] merged 10 commits into
flutter:masterfrom
vashworth:slow_swiftpm_download_v1
Apr 1, 2026
Merged

Warn about slow SwiftPM downloads and centralize SwiftPM cache#183747
auto-submit[bot] merged 10 commits into
flutter:masterfrom
vashworth:slow_swiftpm_download_v1

Conversation

@vashworth

@vashworth vashworth commented Mar 16, 2026

Copy link
Copy Markdown
Contributor

SwiftPM can take several minutes to download remote dependencies. It can also take several seconds (~30) to fetch cached dependencies. To mitigate this, we start fetching the SwiftPM dependencies asynchronously in injectPlugins->DarwinDependencyManagement.setUp but do not wait for it to complete. This is called when the developer/IDE does flutter pub get, flutter build ios, or flutter run. However, when doing flutter build ios or flutter run, it waits for the dependencies to finish being fetched and will display some output to let the user know progress is being made.

This PR also forces our commands to use a single cache place instead of a different one per scheme.

Example:

Xcode is fetching Swift Package Manager dependencies. This may take several minutes...
  Fetching from https://github.com/google/app-check.git (cached)...
  Fetching from https://github.com/google/GoogleAppMeasurement.git (cached)...
  Fetching from https://github.com/google/grpc-binary.git (cached)...
  Fetching from https://github.com/google/abseil-cpp-binary.git (cached)...
  Fetching from https://github.com/google/interop-ios-for-google-sdks.git (cached)...
  Fetching from https://github.com/firebase/flutterfire (cached)...
  Fetching from https://github.com/firebase/leveldb.git (cached)...
  Fetching from https://github.com/google/gtm-session-fetcher.git (cached)...
  Fetching from https://github.com/google/promises.git (cached)...
  Fetching from https://github.com/firebase/firebase-ios-sdk (cached)...
  Fetching from https://github.com/googleads/google-ads-on-device-conversion-ios-sdk (cached)...
  Fetching from https://github.com/google/GoogleUtilities.git (cached)...
  Fetching from https://github.com/firebase/nanopb.git (cached)...
  Fetching from https://github.com/google/GoogleDataTransport.git (cached)...

Addresses #183659.

Pre-launch Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

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.

@github-actions github-actions Bot added platform-ios iOS applications specifically tool Affects the "flutter" command-line tool. See also t: labels. a: desktop Running on desktop team-ios Owned by iOS platform team team-macos Owned by the macOS platform team platform-macos labels Mar 16, 2026
@vashworth vashworth marked this pull request as ready for review March 20, 2026 18:57
@vashworth vashworth requested review from a team as code owners March 20, 2026 18:57
@vashworth vashworth added the CICD Run CI/CD label Mar 20, 2026

@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

The pull request refactors Xcode build command execution within flutter_tools by introducing a new xcodebuildCommand method in XcodeProjectInterpreter to consistently handle Swift Package Manager (SPM) cache paths and resolution options. It also adds a prefetchSwiftPackages method to proactively resolve SPM dependencies, including logic to manage concurrent processes. The getIosBuildDirectory and getMacOSBuildDirectory functions were updated to accept optional Config and FileSystem parameters for greater flexibility. These changes are integrated across various flutter_tools commands and migrations, such as clean and build_macos, and reflected in updated test cases. The review identified two areas for improvement: ensuring the buildDirectory parameter is correctly utilized when calling xcodebuildCommand within cleanWorkspace to prevent Swift package resolution issues, and adding null checks for config and fileSystem in the buildDirectory method to avoid potential null pointer exceptions.

Comment thread packages/flutter_tools/lib/src/ios/xcodeproj.dart Outdated
Comment thread packages/flutter_tools/lib/src/darwin/darwin.dart Outdated
@vashworth vashworth changed the title Warn about slow SwiftPM downloads Warn about slow SwiftPM downloads and centralize SwiftPM cache Mar 20, 2026
@github-actions github-actions Bot removed the CICD Run CI/CD label Mar 23, 2026
@vashworth vashworth added the CICD Run CI/CD label Mar 23, 2026
@vashworth vashworth requested a review from bkonyi March 23, 2026 16:39
String? projectFilename,
required Directory buildDirectory,
}) async {
await prefetchSwiftPackages(projectPath, buildDirectory: buildDirectory, quiet: false);

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.

Drive by comment (i haven't looked closer into this PR): I wonder if there's a better place to put prefetchSwiftPackages. Putting it in getInfo feels like a hidden magic.

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.

Yeah I had a hard time deciding where to put it. Essentially it needs to be run before any other xcodebuild command and getInfo is the first to get called from what I could tell. There are perhaps different scenarios that I may not have accounted for so I've since decided to refactor and put it in an xcodebuild command wrapper function so it's called before every xcodebuild project command (it'll skip if already started)

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.

I think we should be very cautious when adding more workarounds and shortcuts, especially when we are already know it would become a tech debt.

There are perhaps different scenarios that I may not have accounted for

Can consider covering the most common paths (that we have tested) first? This also helps us to audit our use cases.

I've since decided to refactor and put it in an xcodebuild command wrapper function

If we put it an xcodebuild wrapper, is it too late to have any saving in time? (I assume xcodebuild is called when we do a flutter build?)

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.

I'm not sure I understand. I think you'll need to take a look at the code to understand what I did

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.

If we put it an xcodebuild wrapper, is it too late to have any saving in time? (I assume xcodebuild is called when we do a flutter build?)

@vashworth I think i may need some help understanding this part. My understanding is that we only need to pre-fetch during a flutter pub get, but not during xcodebuild (which won't be helpful in saving time), but I could be getting this problem wrong.

@vashworth vashworth Apr 1, 2026

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.

Fetching during pub get is to get the fetching started early on to save time in following command. Fetching during flutter build and therefore before xcodebuild is about giving helpful logging about the progress of the downloads. See PR description

bkonyi
bkonyi previously approved these changes Mar 30, 2026

@bkonyi bkonyi 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.

LGTM overall

Comment thread packages/flutter_tools/lib/src/darwin/darwin.dart Outdated
Comment thread packages/flutter_tools/lib/src/ios/xcodeproj.dart
Comment thread packages/flutter_tools/lib/src/ios/xcodeproj.dart Outdated
Comment thread packages/flutter_tools/lib/src/build_info.dart Outdated
String getIosBuildDirectory() {
return globals.fs.path.join(getBuildDirectory(), FlutterDarwinPlatform.ios.name);
String getIosBuildDirectory([Config? config, FileSystem? fileSystem]) {
final Config localConfig = config ?? globals.config;

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.

Nit: I'd just make config and fileSystem required arguments and pass them in here. We'd like to eventually move away from using globals.

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.

That would be a very large refactor since this is used all over the place so I think I'll defer for now. The changes I made here are essentially allowed you to pass in the needed variables to replace the globals so my code can avoid using globals. Whereas before, it was always using globals.

Comment thread packages/flutter_tools/lib/src/build_info.dart Outdated
@github-actions github-actions Bot removed the CICD Run CI/CD label Mar 31, 2026
@vashworth vashworth added the CICD Run CI/CD label Mar 31, 2026
@github-actions github-actions Bot removed the CICD Run CI/CD label Mar 31, 2026
@github-actions github-actions Bot removed the CICD Run CI/CD label Apr 1, 2026
@vashworth vashworth added the CICD Run CI/CD label Apr 1, 2026
@vashworth vashworth added the autosubmit Merge PR when tree becomes green via auto submit App label Apr 1, 2026
@auto-submit auto-submit Bot added this pull request to the merge queue Apr 1, 2026
}) async {
// All `xcodebuild` project commands will download and resolve Swift packages.
// We should always prefetch Swift packages before running any `xcodebuild` project command
// to control the output.

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.

@vashworth What does "control the output" mean?

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 logging, see PR description

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.

Every xcodebuild command will try to fetch the packages. We specifically do the prefetch before any other so we can control what's logged to the user. Otherwise it looks like the command is just hanging for 4 minutes

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.

Ah ok... it's probably too late, but it isn't clear when we read this code that output is the log, and what control the output means.

@hellohuanlin hellohuanlin Apr 1, 2026

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.

Discussed offline - "control the output" means:

when we prefetch (flutter pub get), we don't print out logs. but when we do flutter build ios, we do want to print it out.

Merged via the queue into flutter:master with commit 1460ed7 Apr 1, 2026
151 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Apr 1, 2026
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 1, 2026

@hellohuanlin hellohuanlin 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.

We discussed offline - since the PR is already landed, we can leave it, but I'd still want to make sure this PR has enough info to clarify a few things for the sake of future reference (also for sanity check my understanding).

///
/// When [skipPackageResolution] is true, it uses arguments to attempt skipping any Swift package
/// resolution or updates. This should be false when running [prefetchSwiftPackages], so packages
/// should already be resolved, downloaded, and updated on subsquent `xcodebuild` commands.

@hellohuanlin hellohuanlin Apr 1, 2026

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.

Discussed offline:

  • prefetchSwiftPackages is also false for flutter build ios/macos commands just to be safe, since they actually need the updated packages.
  • prefetchSwiftPackages does not actually call xcodebuildProjectCommand, but instead it calls xcodebuildProjectCommandArguments (comment nit)

}) async {
// All `xcodebuild` project commands will download and resolve Swift packages.
// We should always prefetch Swift packages before running any `xcodebuild` project command
// to control the output.

@hellohuanlin hellohuanlin Apr 1, 2026

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.

Discussed offline - "control the output" means:

when we prefetch (flutter pub get), we don't print out logs. but when we do flutter build ios, we do want to print it out.

'-disableAutomaticPackageResolution',
'-skipPackageUpdates',
'-skipPackagePluginValidation',
'-skipPackageSignatureValidation',

@hellohuanlin hellohuanlin Apr 1, 2026

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.

Discussed offline: skipPackageResolution actually doesn't prevent downloading missing packages (so the naming isn't 100% accurate). Instead, these arguments simply prevents packages from being updated. If packages are missing, calling any xcodebuild cmd would still try to download packages.

engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 2, 2026
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 2, 2026
auto-submit Bot pushed a commit to flutter/packages that referenced this pull request Apr 2, 2026
flutter/flutter@3d69471...0f401ee

2026-04-02 matej.knopp@gmail.com Remove isSizedToContent from _window_linux.dart. (flutter/flutter#184506)
2026-04-02 matej.knopp@gmail.com Windows: Get graphics adapter from engine instead of view (flutter/flutter#184479)
2026-04-02 robert.ancell@canonical.com Reduce number of mallocs in FFI call (flutter/flutter#184166)
2026-04-02 robert.ancell@canonical.com Handle events without a device (flutter/flutter#184163)
2026-04-02 robert.ancell@canonical.com Implement tooltip windows on Linux (flutter/flutter#182348)
2026-04-02 engine-flutter-autoroll@skia.org Roll Skia from bdeebacf23c8 to bb9fd8653739 (4 revisions) (flutter/flutter#184494)
2026-04-02 matej.knopp@gmail.com Implement popup windows for macOS (flutter/flutter#182371)
2026-04-02 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from fV-JIWUt4FQGeDtEe... to BFLjk6Uwd0gs_Hkdk... (flutter/flutter#184492)
2026-04-02 victorsanniay@gmail.com Add await or ignore to future-returning methods defined in Dart SDK (flutter/flutter#184229)
2026-04-02 engine-flutter-autoroll@skia.org Roll Dart SDK from 043a2bfd56ff to d84bdfeb45eb (2 revisions) (flutter/flutter#184487)
2026-04-01 engine-flutter-autoroll@skia.org Roll Skia from c2363c39c283 to bdeebacf23c8 (9 revisions) (flutter/flutter#184480)
2026-04-01 ksanaullah383.khan@gmail.com Remove sliver_test_utils cross-import from sliver_app_bar_test (flutter/flutter#184193)
2026-04-01 116356835+AbdeMohlbi@users.noreply.github.com Improve error message when `dart-define` content are not `base64 encoded` and add more test cases (flutter/flutter#184219)
2026-04-01 116356835+AbdeMohlbi@users.noreply.github.com Replace usages of `MediaQuery.of(context).property` with `MediaQuery.propertyOf(context)` (flutter/flutter#184211)
2026-04-01 techonlabs@gmail.com [ios] Add opt-in inline prediction text input support (flutter/flutter#183650)
2026-04-01 jesswon@google.com [fix-forward] fix build_android_host_app_with_module_source integration test (flutter/flutter#184466)
2026-04-01 katelovett@google.com Update style guide (flutter/flutter#184478)
2026-04-01 engine-flutter-autoroll@skia.org Roll Packages from b04f3e5 to b3fcf14 (3 revisions) (flutter/flutter#184474)
2026-04-01 15619084+vashworth@users.noreply.github.com Warn about slow SwiftPM downloads and centralize SwiftPM cache (flutter/flutter#183747)
2026-04-01 15619084+vashworth@users.noreply.github.com Inject FlutterFramework dependency in iOS Add2App swift packages (flutter/flutter#184365)
2026-04-01 1063596+reidbaker@users.noreply.github.com Prepare for skills adoption (flutter/flutter#184129)

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 louisehsu@google.com,stuartmorgan@google.com 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
ahmedsameha1 pushed a commit to ahmedsameha1/flutter that referenced this pull request Apr 14, 2026
…er#183747)

SwiftPM can take several minutes to download remote dependencies. It can
also take several seconds (~30) to fetch cached dependencies. To
mitigate this, we start fetching the SwiftPM dependencies asynchronously
in `injectPlugins`->`DarwinDependencyManagement.setUp` but do not wait
for it to complete. This is called when the developer/IDE does `flutter
pub get`, `flutter build ios`, or `flutter run`. However, when doing
`flutter build ios` or `flutter run`, it waits for the dependencies to
finish being fetched and will display some output to let the user know
progress is being made.

This PR also forces our commands to use a single cache place instead of
a different one per scheme.

Example:
```console
Xcode is fetching Swift Package Manager dependencies. This may take several minutes...
  Fetching from https://github.com/google/app-check.git (cached)...
  Fetching from https://github.com/google/GoogleAppMeasurement.git (cached)...
  Fetching from https://github.com/google/grpc-binary.git (cached)...
  Fetching from https://github.com/google/abseil-cpp-binary.git (cached)...
  Fetching from https://github.com/google/interop-ios-for-google-sdks.git (cached)...
  Fetching from https://github.com/firebase/flutterfire (cached)...
  Fetching from https://github.com/firebase/leveldb.git (cached)...
  Fetching from https://github.com/google/gtm-session-fetcher.git (cached)...
  Fetching from https://github.com/google/promises.git (cached)...
  Fetching from https://github.com/firebase/firebase-ios-sdk (cached)...
  Fetching from https://github.com/googleads/google-ads-on-device-conversion-ios-sdk (cached)...
  Fetching from https://github.com/google/GoogleUtilities.git (cached)...
  Fetching from https://github.com/firebase/nanopb.git (cached)...
  Fetching from https://github.com/google/GoogleDataTransport.git (cached)...
 ```
 
 Addresses flutter#183659.

## 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.

If you need help, consider asking for advice on the #hackers-new channel on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). 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.

<!-- Links -->
[Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
[Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
mbcorona pushed a commit to mbcorona/flutter that referenced this pull request Apr 15, 2026
…er#183747)

SwiftPM can take several minutes to download remote dependencies. It can
also take several seconds (~30) to fetch cached dependencies. To
mitigate this, we start fetching the SwiftPM dependencies asynchronously
in `injectPlugins`->`DarwinDependencyManagement.setUp` but do not wait
for it to complete. This is called when the developer/IDE does `flutter
pub get`, `flutter build ios`, or `flutter run`. However, when doing
`flutter build ios` or `flutter run`, it waits for the dependencies to
finish being fetched and will display some output to let the user know
progress is being made.

This PR also forces our commands to use a single cache place instead of
a different one per scheme.

Example:
```console
Xcode is fetching Swift Package Manager dependencies. This may take several minutes...
  Fetching from https://github.com/google/app-check.git (cached)...
  Fetching from https://github.com/google/GoogleAppMeasurement.git (cached)...
  Fetching from https://github.com/google/grpc-binary.git (cached)...
  Fetching from https://github.com/google/abseil-cpp-binary.git (cached)...
  Fetching from https://github.com/google/interop-ios-for-google-sdks.git (cached)...
  Fetching from https://github.com/firebase/flutterfire (cached)...
  Fetching from https://github.com/firebase/leveldb.git (cached)...
  Fetching from https://github.com/google/gtm-session-fetcher.git (cached)...
  Fetching from https://github.com/google/promises.git (cached)...
  Fetching from https://github.com/firebase/firebase-ios-sdk (cached)...
  Fetching from https://github.com/googleads/google-ads-on-device-conversion-ios-sdk (cached)...
  Fetching from https://github.com/google/GoogleUtilities.git (cached)...
  Fetching from https://github.com/firebase/nanopb.git (cached)...
  Fetching from https://github.com/google/GoogleDataTransport.git (cached)...
 ```
 
 Addresses flutter#183659.

## 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.

If you need help, consider asking for advice on the #hackers-new channel on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). 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.

<!-- Links -->
[Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
[Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
@stuartmorgan-g stuartmorgan-g added platform-macos Building on or for macOS specifically and removed platform-macos labels Apr 16, 2026
asaarnak added a commit to asaarnak/flutter that referenced this pull request Apr 21, 2026
asaarnak added a commit to asaarnak/flutter that referenced this pull request Apr 21, 2026
creatorpiyush pushed a commit to creatorpiyush/packages that referenced this pull request Jun 10, 2026
…r#11420)

flutter/flutter@3d69471...0f401ee

2026-04-02 matej.knopp@gmail.com Remove isSizedToContent from _window_linux.dart. (flutter/flutter#184506)
2026-04-02 matej.knopp@gmail.com Windows: Get graphics adapter from engine instead of view (flutter/flutter#184479)
2026-04-02 robert.ancell@canonical.com Reduce number of mallocs in FFI call (flutter/flutter#184166)
2026-04-02 robert.ancell@canonical.com Handle events without a device (flutter/flutter#184163)
2026-04-02 robert.ancell@canonical.com Implement tooltip windows on Linux (flutter/flutter#182348)
2026-04-02 engine-flutter-autoroll@skia.org Roll Skia from bdeebacf23c8 to bb9fd8653739 (4 revisions) (flutter/flutter#184494)
2026-04-02 matej.knopp@gmail.com Implement popup windows for macOS (flutter/flutter#182371)
2026-04-02 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from fV-JIWUt4FQGeDtEe... to BFLjk6Uwd0gs_Hkdk... (flutter/flutter#184492)
2026-04-02 victorsanniay@gmail.com Add await or ignore to future-returning methods defined in Dart SDK (flutter/flutter#184229)
2026-04-02 engine-flutter-autoroll@skia.org Roll Dart SDK from 043a2bfd56ff to d84bdfeb45eb (2 revisions) (flutter/flutter#184487)
2026-04-01 engine-flutter-autoroll@skia.org Roll Skia from c2363c39c283 to bdeebacf23c8 (9 revisions) (flutter/flutter#184480)
2026-04-01 ksanaullah383.khan@gmail.com Remove sliver_test_utils cross-import from sliver_app_bar_test (flutter/flutter#184193)
2026-04-01 116356835+AbdeMohlbi@users.noreply.github.com Improve error message when `dart-define` content are not `base64 encoded` and add more test cases (flutter/flutter#184219)
2026-04-01 116356835+AbdeMohlbi@users.noreply.github.com Replace usages of `MediaQuery.of(context).property` with `MediaQuery.propertyOf(context)` (flutter/flutter#184211)
2026-04-01 techonlabs@gmail.com [ios] Add opt-in inline prediction text input support (flutter/flutter#183650)
2026-04-01 jesswon@google.com [fix-forward] fix build_android_host_app_with_module_source integration test (flutter/flutter#184466)
2026-04-01 katelovett@google.com Update style guide (flutter/flutter#184478)
2026-04-01 engine-flutter-autoroll@skia.org Roll Packages from b04f3e5 to b3fcf14 (3 revisions) (flutter/flutter#184474)
2026-04-01 15619084+vashworth@users.noreply.github.com Warn about slow SwiftPM downloads and centralize SwiftPM cache (flutter/flutter#183747)
2026-04-01 15619084+vashworth@users.noreply.github.com Inject FlutterFramework dependency in iOS Add2App swift packages (flutter/flutter#184365)
2026-04-01 1063596+reidbaker@users.noreply.github.com Prepare for skills adoption (flutter/flutter#184129)

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 louisehsu@google.com,stuartmorgan@google.com 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
try {
final command = <String>[
..._xcodebuildProjectCommandArguments(buildDirectory, skipPackageResolution: false),
'-resolvePackageDependencies',

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

here's where we get the following issue if there are multiple .xcodeproj #78839

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

it's the same output if using

markturner@Marks-MacBook-Pro ios % xcodebuild -list  
Command line invocation:
    /Applications/Xcode-26.3.0.app/Contents/Developer/usr/bin/xcodebuild -list

2026-06-15 22:31:56.879 xcodebuild[47691:3450243] Writing error result bundle to /var/folders/2g/vm5g1h1924dbm_vzmrhr_tg80000gp/T/ResultBundle_2026-15-06_22-31-0056.xcresult
xcodebuild: error: The directory /Users/markturner/Developer/mt/pbs-radio-flutter/ios contains 2 projects,including multiple projects with the current extension (.xcodeproj). Specify the project to use with the -project option.

@markst markst Jun 15, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

so really it should be explicit about passing the 'Runner' project:

xcodebuild -project ./Runner.xcodeproj -resolvePackageDependencies

though granted it is a particular edge case for users to have multiple Xcode projects in the ./ios directory

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.

@markst Is there an open issue for this? If not, please file one. Also, we'll gladly take a PR if you wish to fix it yourself.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I chose not to create another issue as there were already multiple regarding, and was unable to re-open existing. I'll consider working on a fix when I'm next working on related project. But since it is an edge case if users have more than one xcodeproj, it's not a pressing concern.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

a: desktop Running on desktop CICD Run CI/CD platform-ios iOS applications specifically platform-macos Building on or for macOS specifically team-ios Owned by iOS platform team team-macos Owned by the macOS platform team tool Affects the "flutter" command-line tool. See also t: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants