Revert "Preprovision Android NDK for flavored builds and reuse matchi…#185439
Conversation
…ng unflavored NDKs (flutter#183555)" This reverts commit fb3b552.
There was a problem hiding this comment.
Code Review
This pull request removes the tool-side Android NDK preprovisioning logic and the associated printNdkVersion Gradle task, refactoring NDK path resolution and cleaning up related tests and error messages. Feedback indicates that refactoring certain tests to use AndroidSdk.locateAndroidSdk() instead of mocks compromises test hermeticity by relying on the host environment. Additionally, a misleading comment in android_sdk.dart regarding LLVM detection should be corrected to accurately reflect the code's logic.
|
|
||
| createSharedGradleFiles(); | ||
| final File aabFile = createAabFile(BuildMode.release); | ||
| final AndroidSdk sdk = AndroidSdk.locateAndroidSdk()!; |
There was a problem hiding this comment.
This change significantly reduces test isolation and hermeticity. By removing the AndroidSdk and ProcessManager overrides from testUsingContext (as seen in the changes to lines 966 and 1031) and instead calling AndroidSdk.locateAndroidSdk()!, the tests now depend on the host machine's Android SDK installation and environment variables. Furthermore, without the ProcessManager override in the context, the code under test will use the real process manager instead of the FakeProcessManager configured in the test, potentially attempting to execute real commands on the host system. These overrides should be restored to ensure the tests remain hermetic and reliable across different environments.
| .childDirectory('bin') | ||
| .childFile(binaryName); | ||
| if (executable.existsSync()) { | ||
| // LLVM missing in this NDK version. |
|
Thanks for catching this. I definitely did not expect the Windows compile hit to be that large, so reverting makes sense. Looking back, I think the mistake was widening the preprovisioning path into the common unflavored build path instead of keeping it scoped to flavored builds, which was where the original issue was actually showing up. I’m happy to follow up with a narrower reland that only uses this preprovisioning flow for flavored builds and leaves the unflavored path unchanged. |
|
I have a narrower reland ready locally now. The change keeps the /preprovisioning path scoped to flavored Android builds only, and leaves the unflavored path unchanged. I’ll open the follow-up PR once this revert lands. |
|
autosubmit label was removed for flutter/flutter/185439, because - The status or check suite Google testing has failed. Please fix the issues identified (or deflake) before re-applying this label. |
Roll Flutter from 5e4f16931847 to aeb96234de86 (42 revisions) flutter/flutter@5e4f169...aeb9623 2026-04-24 [email protected] Fix leak on error case (flutter/flutter#185516) 2026-04-24 [email protected] Roll Skia from 04c6c369cfd0 to 1c9b0b9141e9 (2 revisions) (flutter/flutter#185529) 2026-04-24 [email protected] Roll Dart SDK from f386b11262f6 to c26627715892 (1 revision) (flutter/flutter#185526) 2026-04-24 [email protected] Roll Skia from 290a056fcd0e to 04c6c369cfd0 (2 revisions) (flutter/flutter#185525) 2026-04-24 [email protected] [ios] Extract SplashScreenManager from FlutterViewController (flutter/flutter#185405) 2026-04-24 [email protected] Roll Fuchsia Linux SDK from j3UCWZhWx7zSl9Asy... to 9fPnyEo9PaNdXtasl... (flutter/flutter#185523) 2026-04-24 [email protected] Roll Skia from 4c8bedd3c932 to 290a056fcd0e (1 revision) (flutter/flutter#185518) 2026-04-24 [email protected] Roll Dart SDK from 70665fc3fd2e to f386b11262f6 (2 revisions) (flutter/flutter#185512) 2026-04-24 [email protected] Handle hairline strokes in UberSDF (flutter/flutter#184895) 2026-04-24 [email protected] Roll Skia from ea20c73ac72c to 4c8bedd3c932 (3 revisions) (flutter/flutter#185509) 2026-04-24 [email protected] Use relative path for reloadedSourcesUri and reloaded modules (flutter/flutter#184598) 2026-04-24 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (#185431)" (flutter/flutter#185513) 2026-04-24 [email protected] Roll Skia from e8d00d634c22 to ea20c73ac72c (8 revisions) (flutter/flutter#185500) 2026-04-23 [email protected] Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (flutter/flutter#185431) 2026-04-23 [email protected] update team-text-input pr triage link to filter out "waiting for response" label (flutter/flutter#185499) 2026-04-23 [email protected] Check for overflow when computing the pixel buffer size for an animated PNG frame (flutter/flutter#185442) 2026-04-23 [email protected] Impeller: Recreate Vulkan transients on surface size change (flutter/flutter#185122) 2026-04-23 [email protected] Updating the windowing API for sized to content regular and dialog windows + removing the decorated flag (flutter/flutter#184977) 2026-04-23 [email protected] Roll Dart SDK from 634991935e9a to 70665fc3fd2e (2 revisions) (flutter/flutter#185488) 2026-04-23 [email protected] Updating ios triage link (flutter/flutter#185437) 2026-04-23 [email protected] Revert "Preprovision Android NDK for flavored builds and reuse matchi… (flutter/flutter#185439) 2026-04-23 [email protected] fix(web): Fix LateInitializationError in CkSurface and SkwasmSurface (flutter/flutter#185116) 2026-04-23 [email protected] [web] Implement stepped image downscaling for CanvasKit and Skwasm (flutter/flutter#184741) 2026-04-23 [email protected] Made wide_gamut_macos only run on arm64 machines (flutter/flutter#185486) 2026-04-23 [email protected] [ios] Update documentation for FlutterAppDelegate.pluginRegistrant (flutter/flutter#185201) 2026-04-23 [email protected] Roll Dart SDK from bdf48933f3cf to 634991935e9a (1 revision) (flutter/flutter#185462) 2026-04-23 [email protected] Roll Skia from 5fe6162546b1 to e8d00d634c22 (3 revisions) (flutter/flutter#185459) 2026-04-23 [email protected] Roll Skia from 0049c5d91b08 to 5fe6162546b1 (1 revision) (flutter/flutter#185455) 2026-04-23 [email protected] Roll Dart SDK from 9648f446f131 to bdf48933f3cf (19 revisions) (flutter/flutter#185451) 2026-04-23 [email protected] Roll Skia from 11640d1cbc5c to 0049c5d91b08 (11 revisions) (flutter/flutter#185453) 2026-04-23 [email protected] Add disposal guidance to CurvedAnimation and CurveTween docs (flutter/flutter#184569) 2026-04-23 [email protected] Add `clipBehavior` parameter to `AnimatedCrossFade` (flutter/flutter#184545) 2026-04-23 [email protected] [fuchsia] Ask for only VMEX, not ambient-replace-as-executable. (flutter/flutter#185099) 2026-04-23 [email protected] Unify SemanticUpdateBuilder API for web and non-web (flutter/flutter#185433) 2026-04-22 [email protected] Fix ImageInfo.isCloneOf tests by moving async work to setUp (flutter/flutter#185254) 2026-04-22 [email protected] Roll Fuchsia Linux SDK from UdpQnaP5eSaDZd3-i... to j3UCWZhWx7zSl9Asy... (flutter/flutter#185438) 2026-04-22 [email protected] Adds script to run malioc locally (flutter/flutter#185371) 2026-04-22 [email protected] Add await mechanism to setClipboard in android_semantics_integration test (flutter/flutter#185428) 2026-04-22 [email protected] Add ability to pass flags to `et run` (flutter/flutter#185109) 2026-04-22 [email protected] Add more guidelines for code review bot (flutter/flutter#185367) 2026-04-22 [email protected] Roll pub packages (flutter/flutter#185274) 2026-04-22 [email protected] Fix incorrect scale parameter reference in Image constructor docs (flutter/flutter#185403) 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 ...
…r#11576) Roll Flutter from 5e4f16931847 to aeb96234de86 (42 revisions) flutter/flutter@5e4f169...aeb9623 2026-04-24 [email protected] Fix leak on error case (flutter/flutter#185516) 2026-04-24 [email protected] Roll Skia from 04c6c369cfd0 to 1c9b0b9141e9 (2 revisions) (flutter/flutter#185529) 2026-04-24 [email protected] Roll Dart SDK from f386b11262f6 to c26627715892 (1 revision) (flutter/flutter#185526) 2026-04-24 [email protected] Roll Skia from 290a056fcd0e to 04c6c369cfd0 (2 revisions) (flutter/flutter#185525) 2026-04-24 [email protected] [ios] Extract SplashScreenManager from FlutterViewController (flutter/flutter#185405) 2026-04-24 [email protected] Roll Fuchsia Linux SDK from j3UCWZhWx7zSl9Asy... to 9fPnyEo9PaNdXtasl... (flutter/flutter#185523) 2026-04-24 [email protected] Roll Skia from 4c8bedd3c932 to 290a056fcd0e (1 revision) (flutter/flutter#185518) 2026-04-24 [email protected] Roll Dart SDK from 70665fc3fd2e to f386b11262f6 (2 revisions) (flutter/flutter#185512) 2026-04-24 [email protected] Handle hairline strokes in UberSDF (flutter/flutter#184895) 2026-04-24 [email protected] Roll Skia from ea20c73ac72c to 4c8bedd3c932 (3 revisions) (flutter/flutter#185509) 2026-04-24 [email protected] Use relative path for reloadedSourcesUri and reloaded modules (flutter/flutter#184598) 2026-04-24 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (#185431)" (flutter/flutter#185513) 2026-04-24 [email protected] Roll Skia from e8d00d634c22 to ea20c73ac72c (8 revisions) (flutter/flutter#185500) 2026-04-23 [email protected] Run all flutter/flutter macOS tests using Xcode 26 and iOS 26 simulator (flutter/flutter#185431) 2026-04-23 [email protected] update team-text-input pr triage link to filter out "waiting for response" label (flutter/flutter#185499) 2026-04-23 [email protected] Check for overflow when computing the pixel buffer size for an animated PNG frame (flutter/flutter#185442) 2026-04-23 [email protected] Impeller: Recreate Vulkan transients on surface size change (flutter/flutter#185122) 2026-04-23 [email protected] Updating the windowing API for sized to content regular and dialog windows + removing the decorated flag (flutter/flutter#184977) 2026-04-23 [email protected] Roll Dart SDK from 634991935e9a to 70665fc3fd2e (2 revisions) (flutter/flutter#185488) 2026-04-23 [email protected] Updating ios triage link (flutter/flutter#185437) 2026-04-23 [email protected] Revert "Preprovision Android NDK for flavored builds and reuse matchi… (flutter/flutter#185439) 2026-04-23 [email protected] fix(web): Fix LateInitializationError in CkSurface and SkwasmSurface (flutter/flutter#185116) 2026-04-23 [email protected] [web] Implement stepped image downscaling for CanvasKit and Skwasm (flutter/flutter#184741) 2026-04-23 [email protected] Made wide_gamut_macos only run on arm64 machines (flutter/flutter#185486) 2026-04-23 [email protected] [ios] Update documentation for FlutterAppDelegate.pluginRegistrant (flutter/flutter#185201) 2026-04-23 [email protected] Roll Dart SDK from bdf48933f3cf to 634991935e9a (1 revision) (flutter/flutter#185462) 2026-04-23 [email protected] Roll Skia from 5fe6162546b1 to e8d00d634c22 (3 revisions) (flutter/flutter#185459) 2026-04-23 [email protected] Roll Skia from 0049c5d91b08 to 5fe6162546b1 (1 revision) (flutter/flutter#185455) 2026-04-23 [email protected] Roll Dart SDK from 9648f446f131 to bdf48933f3cf (19 revisions) (flutter/flutter#185451) 2026-04-23 [email protected] Roll Skia from 11640d1cbc5c to 0049c5d91b08 (11 revisions) (flutter/flutter#185453) 2026-04-23 [email protected] Add disposal guidance to CurvedAnimation and CurveTween docs (flutter/flutter#184569) 2026-04-23 [email protected] Add `clipBehavior` parameter to `AnimatedCrossFade` (flutter/flutter#184545) 2026-04-23 [email protected] [fuchsia] Ask for only VMEX, not ambient-replace-as-executable. (flutter/flutter#185099) 2026-04-23 [email protected] Unify SemanticUpdateBuilder API for web and non-web (flutter/flutter#185433) 2026-04-22 [email protected] Fix ImageInfo.isCloneOf tests by moving async work to setUp (flutter/flutter#185254) 2026-04-22 [email protected] Roll Fuchsia Linux SDK from UdpQnaP5eSaDZd3-i... to j3UCWZhWx7zSl9Asy... (flutter/flutter#185438) 2026-04-22 [email protected] Adds script to run malioc locally (flutter/flutter#185371) 2026-04-22 [email protected] Add await mechanism to setClipboard in android_semantics_integration test (flutter/flutter#185428) 2026-04-22 [email protected] Add ability to pass flags to `et run` (flutter/flutter#185109) 2026-04-22 [email protected] Add more guidelines for code review bot (flutter/flutter#185367) 2026-04-22 [email protected] Roll pub packages (flutter/flutter#185274) 2026-04-22 [email protected] Fix incorrect scale parameter reference in Image constructor docs (flutter/flutter#185403) 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 ...
…lutter#186337) ## Summary - move Android NDK provisioning into the main Gradle invocation - pass the sdkmanager path, Android SDK root, and validated installed NDK versions from flutter_tools to the Flutter Gradle Plugin - only fall back to the synthetic externalNativeBuild/CMake path when the main invocation cannot satisfy provisioning ## Context This is a draft to explore the single-invocation direction discussed after flutter#183555 and flutter#185439. The goal here is to keep the cleaner shape of doing the NDK check where AGP has already resolved the actual `ndkVersion`, while also tightening the behavior around installation and fallback. ## Design - `AndroidGradleBuilder` now receives `AndroidSdk` explicitly instead of reading it from globals - `flutter_tools` passes: - `flutter.androidSdkRoot` - `flutter.installedNdkVersions` - `flutter.sdkManagerPath` when installation is actually possible - the plugin now: - returns early when the resolved NDK is already installed - installs the resolved NDK with `sdkmanager --sdk_root=...` when possible - verifies `source.properties` after installation - falls back to the synthetic CMake path only when the tool-provided path cannot handle the build ## Validation - `packages/flutter_tools/test/general.shard/android/android_gradle_builder_test.dart` - `packages/flutter_tools/gradle`: `FlutterPluginUtilsTest` - local benchmarking still shows the same structural improvement as the earlier prototype: - no extra `printNdkVersion` Gradle invocation - no unexpected `.cxx` output in the fast path ## Notes This is still a draft because I want feedback on the shape before turning it into the replacement for the narrower flavored-only reland. --------- Co-authored-by: Reid Baker <[email protected]> Co-authored-by: Gray Mackall <[email protected]>
…ng unflavored NDKs (#183555)"
This reverts commit fb3b552.
See context starting at
#183555 (comment)
This will need a separate g3fix, as the original pr had one