From 8edbbb739139ddc9a18bbd41b4d027e6d980b2d5 Mon Sep 17 00:00:00 2001 From: "auto-submit[bot]" <98614782+auto-submit[bot]@users.noreply.github.com> Date: Mon, 15 Dec 2025 21:55:49 +0000 Subject: [PATCH] Reverts "Unmodified android sdk bundle (#179647)" (#179904) Reverts: flutter/flutter#179647 Initiated by: gmackall Reason for reverting: Mac_mokey run_release_test failing Original PR Author: gmackall Reviewed By: {reidbaker, jtmcdole} This change reverts the following previous change: Changes our cipd hosted android sdk+ndk bundle to no longer modify directory structure from what Android directly provides, allowing AGP to find the ndk automatically and preventing downloading. 1. Changes the `create_cipd_packages.sh` script so we don't move the ndk 2. Uses the new script to upload a [36v4unmodified](https://chrome-infra-packages.appspot.com/p/flutter/android/sdk/all/linux-amd64/+/version:36v4unmodified) bundle 3. Changes DEPS+ci.yaml to reference the new bundle 4. Changes GN build rules accordingly 5. Removes special config in existing build.gradle files to point at the location of the ndk - agp should now know where it is without conig 6. For some tests, passes in an environment variable pointing to the ndk location, to override the environment variable passed by the recipes. This variable is respected by the tool, so the recipes passing it, pointing to the wrong place, is problematic. After this change lands we can stop passing it in the recipes, and then we can remove this special config in the tests. But adding it temporarily allows us to make this change without coordinating a recipes change at the same moment, and probably breaking things out of band. Logs from a random postsubmit run of `Mac build_android_host_app_with_module_aar` on the tree currently: https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8695664517253382913/+/u/run_build_android_host_app_with_module_aar/stdout We see > [2025-12-12 10:49:49.223087] [STDOUT] stdout: Checking the license for package NDK (Side by side) 28.2.13676358 in /Volumes/Work/s/w/ir/cache/android/sdk/licenses [2025-12-12 10:49:49.223221] [STDOUT] stdout: License for package NDK (Side by side) 28.2.13676358 accepted. [2025-12-12 10:49:49.223268] [STDOUT] stdout: Preparing "Install NDK (Side by side) 28.2.13676358 v.28.2.13676358". [2025-12-12 10:50:14.093824] [STDOUT] stdout: "Install NDK (Side by side) 28.2.13676358 v.28.2.13676358" ready. [2025-12-12 10:50:14.093909] [STDOUT] stdout: Installing NDK (Side by side) 28.2.13676358 in /Volumes/Work/s/w/ir/cache/android/sdk/ndk/28.2.13676358 [2025-12-12 10:50:14.093947] [STDOUT] stdout: "Install NDK (Side by side) 28.2.13676358 v.28.2.13676358" complete. [2025-12-12 10:50:14.410724] [STDOUT] stdout: "Install NDK (Side by side) 28.2.13676358 v.28.2.13676358" finished. Example of no longer downloading: Logs from a presubmit run: https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8695732180931529361/+/u/run_build_android_host_app_with_module_aar/stdout We don't see these logs. We still see android build tools downloading - we can probably tackle that in another pr. ## Pre-launch Checklist - [ ] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [ ] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [ ] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [ ] I signed the [CLA]. - [ ] I listed at least one issue that this PR fixes in the description above. - [ ] I updated/added relevant documentation (doc comments with `///`). - [ ] I added new tests to check the change I am making, or this PR is [test-exempt]. - [ ] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [ ] 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. [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [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 Co-authored-by: auto-submit[bot] --- .ci.yaml | 208 +++++++++--------- DEPS | 2 +- dev/a11y_assessments/android/app/build.gradle | 8 + .../complex_layout/android/app/build.gradle | 8 + .../macrobenchmarks/android/app/build.gradle | 8 + .../microbenchmarks/android/app/build.gradle | 8 + .../android/app/build.gradle | 8 + .../android/app/build.gradle | 8 + .../android/app/build.gradle | 8 + .../test_apps/stocks/android/app/build.gradle | 8 + dev/bots/run_command.dart | 79 +------ ...uild_android_host_app_with_module_aar.dart | 1 - dev/devicelab/lib/framework/utils.dart | 70 +----- .../test/tasks/build_test_task_test.dart | 6 +- .../android/app/build.gradle | 8 + .../android/app/build.gradle | 8 + .../android/app/build.gradle | 9 + .../android_views/android/app/build.gradle | 8 + .../channels/android/app/build.gradle | 9 + .../android/app/build.gradle | 10 + .../android/component1/build.gradle | 8 + .../android/app/build.gradle | 8 + .../flavors/android/app/build.gradle | 8 + .../flutter_gallery/android/app/build.gradle | 8 + .../app/build.gradle | 8 + .../android/app/build.gradle | 8 + .../SampleApp/build.gradle | 8 + .../app/build.gradle | 9 + .../app/build.gradle.kts | 8 + .../android/app/build.gradle | 8 + .../spell_check/android/app/build.gradle | 8 + .../ui/android/app/build.gradle | 8 + dev/manual_tests/android/app/build.gradle | 8 + dev/tracing_tests/android/app/build.gradle | 8 + engine/src/build/config/android/config.gni | 3 +- engine/src/flutter/ci/binary_size_treemap.sh | 5 +- engine/src/flutter/sky/tools/flutter_gdb | 5 +- .../src/flutter/testing/analyze_core_dump.sh | 3 +- .../tools/android_sdk/create_cipd_packages.sh | 17 ++ .../flutter_view/android/app/build.gradle | 8 + .../hello_world/android/app/build.gradle.kts | 9 + examples/image_list/android/app/build.gradle | 8 + examples/layers/android/app/build.gradle | 8 + .../platform_channel/android/app/build.gradle | 8 + .../platform_view/android/app/build.gradle | 8 + .../example/android/app/build.gradle.kts | 9 + 46 files changed, 421 insertions(+), 265 deletions(-) diff --git a/.ci.yaml b/.ci.yaml index 833722cf839..88161c7ae8e 100644 --- a/.ci.yaml +++ b/.ci.yaml @@ -51,7 +51,7 @@ platform_properties: ] dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "android_virtual_device", "version": "android_36_google_apis_x64.textpb"}, {"dependency": "avd_cipd_version", "version": "build_id:8719362231152674241"}, {"dependency": "open_jdk", "version": "version:21"}, @@ -74,7 +74,7 @@ platform_properties: ] dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "android_virtual_device", "version": "android_36_google_apis_x64.textpb"}, {"dependency": "avd_cipd_version", "version": "build_id:8702262057250908257"}, {"dependency": "open_jdk", "version": "version:21"}, @@ -98,7 +98,7 @@ platform_properties: ] dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "android_virtual_device", "version": "android_35_google_apis_x64.textpb"}, {"dependency": "avd_cipd_version", "version": "build_id:8733065022087935185"}, {"dependency": "open_jdk", "version": "version:21"}, @@ -115,7 +115,7 @@ platform_properties: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "curl", "version": "version:7.64.0"} ] @@ -127,7 +127,7 @@ platform_properties: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "curl", "version": "version:7.64.0"} ] @@ -138,7 +138,7 @@ platform_properties: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "curl", "version": "version:7.64.0"} ] @@ -149,7 +149,7 @@ platform_properties: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "curl", "version": "version:7.64.0"} ] @@ -252,7 +252,7 @@ platform_properties: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"} ] @@ -264,7 +264,7 @@ platform_properties: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"} ] os: Mac-15.1|Mac-15.5|Mac-15.6|Mac-15.7 @@ -342,7 +342,7 @@ platform_properties: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"} ] @@ -375,7 +375,7 @@ targets: test_timeout_secs: "3600" # 1 hour dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "curl", "version": "version:7.64.0"} ] @@ -411,7 +411,7 @@ targets: # Requires Android SDK since we may re-generate Gradle lockfiles dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "gh_cli", "version": "version:2.8.0-2-g32256d38"}, {"dependency": "open_jdk", "version": "version:21"} ] @@ -432,7 +432,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, @@ -456,7 +456,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -475,7 +475,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -494,7 +494,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -513,7 +513,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -532,7 +532,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -692,7 +692,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"} ] @@ -713,7 +713,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, {"dependency": "cmake", "version": "build_id:8787856497187628321"}, @@ -801,7 +801,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, {"dependency": "cmake", "version": "build_id:8787856497187628321"}, @@ -837,7 +837,7 @@ targets: {"dependency": "cmake", "version": "build_id:8787856497187628321"}, {"dependency": "ninja", "version": "version:1.9.0"}, {"dependency": "open_jdk", "version": "version:21"}, - {"dependency": "android_sdk", "version": "version:36v4unmodified"} + {"dependency": "android_sdk", "version": "version:36v4"} ] shard: framework_tests subshard: misc @@ -908,7 +908,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, @@ -931,7 +931,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, @@ -954,7 +954,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, @@ -977,7 +977,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, @@ -1001,7 +1001,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, @@ -1025,7 +1025,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, @@ -1049,7 +1049,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, @@ -1073,7 +1073,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, @@ -1098,7 +1098,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, @@ -1123,7 +1123,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, @@ -1147,7 +1147,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, @@ -1175,7 +1175,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, @@ -1284,7 +1284,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"} ] @@ -1348,7 +1348,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"} ] tags: > @@ -1377,7 +1377,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, {"dependency": "cmake", "version": "build_id:8787856497187628321"}, @@ -1405,7 +1405,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, {"dependency": "cmake", "version": "build_id:8787856497187628321"}, @@ -1433,7 +1433,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, {"dependency": "cmake", "version": "build_id:8787856497187628321"}, @@ -1461,7 +1461,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, {"dependency": "cmake", "version": "build_id:8787856497187628321"}, @@ -1489,7 +1489,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, {"dependency": "cmake", "version": "build_id:8787856497187628321"}, @@ -1517,7 +1517,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, {"dependency": "cmake", "version": "build_id:8787856497187628321"}, @@ -1545,7 +1545,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, {"dependency": "cmake", "version": "build_id:8787856497187628321"}, @@ -1604,7 +1604,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, {"dependency": "cmake", "version": "build_id:8787856497187628321"}, @@ -1631,7 +1631,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:11"} ] @@ -1655,7 +1655,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:17"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, @@ -1682,7 +1682,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, {"dependency": "cmake", "version": "build_id:8787856497187628321"}, @@ -1707,7 +1707,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"} ] shard: tool_tests @@ -1729,7 +1729,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"} ] shard: tool_tests @@ -3715,7 +3715,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "ruby", "version": "ruby_3.1-pod_1.13"}, @@ -3734,7 +3734,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "ruby", "version": "ruby_3.1-pod_1.13"}, @@ -3753,7 +3753,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "ruby", "version": "ruby_3.1-pod_1.13"}, @@ -3772,7 +3772,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "ruby", "version": "ruby_3.1-pod_1.13"}, @@ -3792,7 +3792,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "ruby", "version": "ruby_3.1-pod_1.13"}, @@ -3810,7 +3810,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "ruby", "version": "ruby_3.1-pod_1.13"}, @@ -3828,7 +3828,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "ruby", "version": "ruby_3.1-pod_1.13"}, @@ -3846,7 +3846,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "ruby", "version": "ruby_3.1-pod_1.13"}, @@ -4036,7 +4036,7 @@ targets: {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, {"dependency": "ruby", "version": "ruby_3.1-pod_1.13"}, {"dependency": "open_jdk", "version": "version:21"}, - {"dependency": "android_sdk", "version": "version:36v4unmodified"} + {"dependency": "android_sdk", "version": "version:36v4"} ] shard: framework_tests subshard: misc @@ -4067,7 +4067,7 @@ targets: {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, {"dependency": "ruby", "version": "ruby_3.1-pod_1.13"}, {"dependency": "open_jdk", "version": "version:21"}, - {"dependency": "android_sdk", "version": "version:36v4unmodified"} + {"dependency": "android_sdk", "version": "version:36v4"} ] shard: framework_tests subshard: misc @@ -4123,7 +4123,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"} ] tags: > @@ -4162,7 +4162,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"} ] tags: > @@ -4182,7 +4182,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"} ] tags: > @@ -4202,7 +4202,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"} ] tags: > @@ -4223,7 +4223,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"} ] tags: > @@ -4298,7 +4298,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "ruby", "version": "ruby_3.1-pod_1.13"} ] @@ -4360,7 +4360,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"} ] tags: > @@ -4380,7 +4380,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"} ] @@ -4484,7 +4484,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "ruby", "version": "ruby_3.1-pod_1.13"}, @@ -4511,7 +4511,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "ruby", "version": "ruby_3.1-pod_1.13"}, @@ -4538,7 +4538,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "ruby", "version": "ruby_3.1-pod_1.13"}, @@ -4565,7 +4565,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "ruby", "version": "ruby_3.1-pod_1.13"}, @@ -4592,7 +4592,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "ruby", "version": "ruby_3.1-pod_1.13"}, @@ -4618,7 +4618,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"} ] shard: tool_tests_commands @@ -4633,7 +4633,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"} ] shard: tool_tests_commands @@ -4648,7 +4648,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"} ] shard: tool_tests @@ -5665,7 +5665,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -5683,7 +5683,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -5701,7 +5701,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -5719,7 +5719,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -5737,7 +5737,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -5755,7 +5755,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -5773,7 +5773,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -5791,7 +5791,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -5809,7 +5809,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -5901,7 +5901,7 @@ targets: {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, {"dependency": "vs_build", "version": "version:vs2019"}, {"dependency": "open_jdk", "version": "version:21"}, - {"dependency": "android_sdk", "version": "version:36v4unmodified"} + {"dependency": "android_sdk", "version": "version:36v4"} ] shard: framework_tests subshard: misc @@ -5989,7 +5989,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"} ] @@ -6035,7 +6035,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"} ] @@ -6056,7 +6056,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"} ] @@ -6077,7 +6077,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"} ] @@ -6100,7 +6100,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"} ] @@ -6148,7 +6148,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"} ] @@ -6169,7 +6169,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"} ] @@ -6190,7 +6190,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"} ] @@ -6332,7 +6332,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -6358,7 +6358,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -6384,7 +6384,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -6410,7 +6410,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -6436,7 +6436,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -6462,7 +6462,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -6488,7 +6488,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -6514,7 +6514,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -6540,7 +6540,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, @@ -6567,7 +6567,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"}, {"dependency": "vs_build", "version": "version:vs2019"} ] @@ -6614,7 +6614,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4unmodified"}, + {"dependency": "android_sdk", "version": "version:36v4"}, {"dependency": "open_jdk", "version": "version:21"} ] shard: tool_tests diff --git a/DEPS b/DEPS index a8b6533d8e4..e8940508c61 100644 --- a/DEPS +++ b/DEPS @@ -615,7 +615,7 @@ deps = { 'packages': [ { 'package': 'flutter/android/sdk/all/${{platform}}', - 'version': 'version:36v4unmodified' + 'version': 'version:36v3' } ], 'condition': 'download_android_deps', diff --git a/dev/a11y_assessments/android/app/build.gradle b/dev/a11y_assessments/android/app/build.gradle index b3deaa733e3..43f539fe081 100644 --- a/dev/a11y_assessments/android/app/build.gradle +++ b/dev/a11y_assessments/android/app/build.gradle @@ -36,6 +36,14 @@ android { namespace = "com.example.a11y_assessments" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 diff --git a/dev/benchmarks/complex_layout/android/app/build.gradle b/dev/benchmarks/complex_layout/android/app/build.gradle index ca435312615..c01d3bad3b8 100644 --- a/dev/benchmarks/complex_layout/android/app/build.gradle +++ b/dev/benchmarks/complex_layout/android/app/build.gradle @@ -29,6 +29,14 @@ android { namespace = "com.yourcompany.complexLayout" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 diff --git a/dev/benchmarks/macrobenchmarks/android/app/build.gradle b/dev/benchmarks/macrobenchmarks/android/app/build.gradle index a9bdfc5515b..8b7601c9504 100644 --- a/dev/benchmarks/macrobenchmarks/android/app/build.gradle +++ b/dev/benchmarks/macrobenchmarks/android/app/build.gradle @@ -29,6 +29,14 @@ android { namespace = "com.example.macrobenchmarks" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 diff --git a/dev/benchmarks/microbenchmarks/android/app/build.gradle b/dev/benchmarks/microbenchmarks/android/app/build.gradle index d1cf0fd4623..9528b334612 100644 --- a/dev/benchmarks/microbenchmarks/android/app/build.gradle +++ b/dev/benchmarks/microbenchmarks/android/app/build.gradle @@ -29,6 +29,14 @@ android { namespace = "com.yourcompany.microbenchmarks" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 diff --git a/dev/benchmarks/multiple_flutters/android/app/build.gradle b/dev/benchmarks/multiple_flutters/android/app/build.gradle index 74da8986b62..0cc61e7411b 100644 --- a/dev/benchmarks/multiple_flutters/android/app/build.gradle +++ b/dev/benchmarks/multiple_flutters/android/app/build.gradle @@ -16,6 +16,14 @@ android { namespace = "dev.flutter.multipleflutters" compileSdk = 36 + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = "28.2.13676358" // This version must exactly match the version of the NDK that the recipe pulls from CIPD. + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 diff --git a/dev/benchmarks/platform_views_layout/android/app/build.gradle b/dev/benchmarks/platform_views_layout/android/app/build.gradle index 5c412461136..68d89d9cd11 100644 --- a/dev/benchmarks/platform_views_layout/android/app/build.gradle +++ b/dev/benchmarks/platform_views_layout/android/app/build.gradle @@ -29,6 +29,14 @@ android { namespace = "dev.benchmarks.platform_views_layout" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 diff --git a/dev/benchmarks/platform_views_layout_hybrid_composition/android/app/build.gradle b/dev/benchmarks/platform_views_layout_hybrid_composition/android/app/build.gradle index 9f850b0aac7..036681f9b26 100644 --- a/dev/benchmarks/platform_views_layout_hybrid_composition/android/app/build.gradle +++ b/dev/benchmarks/platform_views_layout_hybrid_composition/android/app/build.gradle @@ -29,6 +29,14 @@ android { namespace = "dev.benchmarks.platform_views_layout_hybrid_composition" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 diff --git a/dev/benchmarks/test_apps/stocks/android/app/build.gradle b/dev/benchmarks/test_apps/stocks/android/app/build.gradle index cd5380ae1bd..8d20874cfc5 100644 --- a/dev/benchmarks/test_apps/stocks/android/app/build.gradle +++ b/dev/benchmarks/test_apps/stocks/android/app/build.gradle @@ -29,6 +29,14 @@ android { namespace = "io.flutter.examples.stocks" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 diff --git a/dev/bots/run_command.dart b/dev/bots/run_command.dart index 2429befa3d5..6ec13566772 100644 --- a/dev/bots/run_command.dart +++ b/dev/bots/run_command.dart @@ -100,18 +100,11 @@ Future startCommand( final time = Stopwatch()..start(); print('workingDirectory: $workingDirectory, executable: $executable, arguments: $arguments'); - - // Override ANDROID_NDK_PATH with a valid discovered path or empty string to clear a potentially bad value. - // See also dev/devicelab/lib/framework/utils.dart. - final finalEnvironment = { - ...?environment, - 'ANDROID_NDK_PATH': ?_discoverBestNdkPath(), - }; final io.Process process = await io.Process.start( executable, arguments, workingDirectory: workingDirectory, - environment: finalEnvironment, + environment: environment, ); return Command._( process, @@ -150,76 +143,6 @@ Future startCommand( ); } -String? _bestNdkPath; -String? _discoverBestNdkPath() { - if (_bestNdkPath != null) { - return _bestNdkPath; - } - // If we found a valid NDK, return it. - // Otherwise return empty string to clear any bad inherited value. - final Map env = io.Platform.environment; - String? androidHome = env['ANDROID_HOME'] ?? env['ANDROID_SDK_ROOT']; - if (androidHome == null) { - // Try to find it in common default locations. - if (io.Platform.isMacOS) { - final String? home = env['HOME']; - if (home != null) { - androidHome = path.join(home, 'Library', 'Android', 'sdk'); - } - } else if (io.Platform.isLinux) { - final String? home = env['HOME']; - if (home != null) { - androidHome = path.join(home, 'Android', 'Sdk'); - } - } else if (io.Platform.isWindows) { - final String? homeDrive = env['HOMEDRIVE']; - final String? homePath = env['HOMEPATH']; - if (homeDrive != null && homePath != null) { - androidHome = path.join(homeDrive + homePath, 'AppData', 'Local', 'Android', 'sdk'); - } - } - } - - if (androidHome == null) { - return _bestNdkPath = null; - } - final ndkDir = io.Directory(path.join(androidHome, 'ndk')); - if (!ndkDir.existsSync()) { - return _bestNdkPath = null; - } - final versions = []; - for (final io.FileSystemEntity entity in ndkDir.listSync()) { - if (entity is io.Directory) { - final String name = path.basename(entity.path); - // flutter_tools ignores non-SemVer directories. NDK versions should start with a number. - if (int.tryParse(name.split('.').first) != null) { - versions.add(name); - } - } - } - if (versions.isEmpty) { - return _bestNdkPath = null; - } - // Sort numerically/lexicographically to find the "highest" version. - // We assume versions are like "21.4.7075529" or "23.1.7779620". - // A simple sort works for major versions if they have the same number of digits, - // but to be safe we parse the major version. - versions.sort((String a, String b) { - // Try to parse major version. - final int? aMajor = int.tryParse(a.split('.').first); - final int? bMajor = int.tryParse(b.split('.').first); - if (aMajor != null && bMajor != null) { - if (aMajor != bMajor) { - return aMajor.compareTo(bMajor); - } - } - // Fallback to string comparison. - return a.compareTo(b); - }); - - return _bestNdkPath = path.join(ndkDir.path, versions.last); -} - /// Runs the `executable` and waits until the process exits. /// /// If the process exits with a non-zero exit code and `expectNonZeroExit` is diff --git a/dev/devicelab/bin/tasks/build_android_host_app_with_module_aar.dart b/dev/devicelab/bin/tasks/build_android_host_app_with_module_aar.dart index 8b96ed6810e..775da825294 100644 --- a/dev/devicelab/bin/tasks/build_android_host_app_with_module_aar.dart +++ b/dev/devicelab/bin/tasks/build_android_host_app_with_module_aar.dart @@ -47,7 +47,6 @@ class ModuleTest { Future call() async { section('Running: $buildTarget-$gradleVersion'); - section('Find Java'); final String? javaHome = await findJavaHome(); diff --git a/dev/devicelab/lib/framework/utils.dart b/dev/devicelab/lib/framework/utils.dart index def1f12bb86..cb5c39715f6 100644 --- a/dev/devicelab/lib/framework/utils.dart +++ b/dev/devicelab/lib/framework/utils.dart @@ -9,7 +9,6 @@ import 'dart:math' as math; import 'package:path/path.dart' as path; import 'package:process/process.dart'; -import 'package:pub_semver/pub_semver.dart'; import 'package:stack_trace/stack_trace.dart'; import 'devices.dart'; @@ -284,17 +283,7 @@ Future startProcess( }) async { final command = '$executable ${arguments?.join(" ") ?? ""}'; final String finalWorkingDirectory = workingDirectory ?? cwd; - final newEnvironment = { - ...?environment, - 'ANDROID_NDK_PATH': ?_discoverBestNdkPath(), - }; - // Override ANDROID_NDK_PATH with a valid discovered path or empty string to clear a potentially bad value. - // See also bots/run_command.dart. - final String? bestNdkPath = _discoverBestNdkPath(); - if (bestNdkPath != null) { - newEnvironment['ANDROID_NDK_PATH'] = bestNdkPath; - } - + final newEnvironment = Map.from(environment ?? {}); newEnvironment['BOT'] = isBot ? 'true' : 'false'; newEnvironment['LANG'] = 'en_US.UTF-8'; print('Executing "$command" in "$finalWorkingDirectory" with environment $newEnvironment'); @@ -807,66 +796,13 @@ Uri? parseServiceUri(String line, {Pattern? prefix}) { return matches.isEmpty ? null : Uri.parse(matches[0].group(0)!); } +/// Checks that the file exists, otherwise throws a [FileSystemException]. void checkFileExists(String file) { if (!exists(File(file))) { - fail('File not found: $file'); + throw FileSystemException('Expected file to exist.', file); } } -String? _bestNdkPath; -String? _discoverBestNdkPath() { - if (_bestNdkPath != null) { - return _bestNdkPath; - } - // If we found a valid NDK, return it. - // Otherwise return empty string to clear any bad inherited value. - final Map env = Platform.environment; - String? androidHome = env['ANDROID_HOME'] ?? env['ANDROID_SDK_ROOT']; - if (androidHome == null) { - // Try to find it in common default locations. - if (Platform.isMacOS) { - final String? home = env['HOME']; - if (home != null) { - androidHome = path.join(home, 'Library', 'Android', 'sdk'); - } - } else if (Platform.isLinux) { - final String? home = env['HOME']; - if (home != null) { - androidHome = path.join(home, 'Android', 'Sdk'); - } - } else if (Platform.isWindows) { - final String? homeDrive = env['HOMEDRIVE']; - final String? homePath = env['HOMEPATH']; - if (homeDrive != null && homePath != null) { - androidHome = path.join(homeDrive + homePath, 'AppData', 'Local', 'Android', 'sdk'); - } - } - } - - if (androidHome == null) { - return _bestNdkPath = null; - } - final ndkDir = Directory(path.join(androidHome, 'ndk')); - if (!ndkDir.existsSync()) { - return _bestNdkPath = null; - } - final versions = []; - for (final FileSystemEntity entity in ndkDir.listSync()) { - if (entity is Directory) { - try { - versions.add(Version.parse(path.basename(entity.path))); - } on FormatException { - // Ignore non-version directories. - } - } - } - if (versions.isEmpty) { - return _bestNdkPath = null; - } - versions.sort(); - return _bestNdkPath = path.join(ndkDir.path, versions.last.toString()); -} - /// Checks that the file does not exists, otherwise throws a [FileSystemException]. void checkFileNotExists(String file) { if (exists(File(file))) { diff --git a/dev/devicelab/test/tasks/build_test_task_test.dart b/dev/devicelab/test/tasks/build_test_task_test.dart index 5b9767f9da2..e6d0f6bc65d 100644 --- a/dev/devicelab/test/tasks/build_test_task_test.dart +++ b/dev/devicelab/test/tasks/build_test_task_test.dart @@ -62,10 +62,8 @@ void main() { final capturedPrint = capturedPrintLines.toString(); expect( capturedPrint, - allOf( - contains('with environment {'), - contains('FLUTTER_DEVICELAB_DEVICEID: FAKE_SUCCESS'), - contains('BOT: true'), + contains( + 'with environment {FLUTTER_DEVICELAB_DEVICEID: FAKE_SUCCESS, BOT: true, LANG: en_US.UTF-8}', ), ); expect(capturedPrint, contains('Process terminated with exit code 0.')); diff --git a/dev/integration_tests/android_engine_test/android/app/build.gradle b/dev/integration_tests/android_engine_test/android/app/build.gradle index a39ea11bc83..5816503114d 100644 --- a/dev/integration_tests/android_engine_test/android/app/build.gradle +++ b/dev/integration_tests/android_engine_test/android/app/build.gradle @@ -13,6 +13,14 @@ android { namespace = "com.example.android_engine_test" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 diff --git a/dev/integration_tests/android_semantics_testing/android/app/build.gradle b/dev/integration_tests/android_semantics_testing/android/app/build.gradle index 333bd28889e..491fac8de70 100644 --- a/dev/integration_tests/android_semantics_testing/android/app/build.gradle +++ b/dev/integration_tests/android_semantics_testing/android/app/build.gradle @@ -20,6 +20,14 @@ android { namespace = "com.yourcompany.platforminteraction" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 diff --git a/dev/integration_tests/android_verified_input/android/app/build.gradle b/dev/integration_tests/android_verified_input/android/app/build.gradle index 73075d64ecf..e6f0187e1e7 100644 --- a/dev/integration_tests/android_verified_input/android/app/build.gradle +++ b/dev/integration_tests/android_verified_input/android/app/build.gradle @@ -30,6 +30,15 @@ android { namespace "io.flutter.integration.android_verified_input" compileSdk flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } + compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 diff --git a/dev/integration_tests/android_views/android/app/build.gradle b/dev/integration_tests/android_views/android/app/build.gradle index d379fcb5620..3524a4baa11 100644 --- a/dev/integration_tests/android_views/android/app/build.gradle +++ b/dev/integration_tests/android_views/android/app/build.gradle @@ -29,6 +29,14 @@ android { namespace = 'io.flutter.integration.platformviews' compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 diff --git a/dev/integration_tests/channels/android/app/build.gradle b/dev/integration_tests/channels/android/app/build.gradle index 3d32be0f083..cb21db12dbb 100644 --- a/dev/integration_tests/channels/android/app/build.gradle +++ b/dev/integration_tests/channels/android/app/build.gradle @@ -30,6 +30,15 @@ android { namespace = "com.example.channels" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } + compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 diff --git a/dev/integration_tests/deferred_components_test/android/app/build.gradle b/dev/integration_tests/deferred_components_test/android/app/build.gradle index 7eea528ab17..9154ce901c2 100644 --- a/dev/integration_tests/deferred_components_test/android/app/build.gradle +++ b/dev/integration_tests/deferred_components_test/android/app/build.gradle @@ -36,9 +36,19 @@ android { namespace = "io.flutter.integration.deferred_components_test" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } + sourceSets { main.java.srcDirs += 'src/main/kotlin' } + lintOptions { disable 'InvalidPackage' } diff --git a/dev/integration_tests/deferred_components_test/android/component1/build.gradle b/dev/integration_tests/deferred_components_test/android/component1/build.gradle index ba3625c33d9..2b0ec98e79d 100644 --- a/dev/integration_tests/deferred_components_test/android/component1/build.gradle +++ b/dev/integration_tests/deferred_components_test/android/component1/build.gradle @@ -26,6 +26,14 @@ android { namespace = "io.flutter.integration.deferred_components_test.component1" compileSdk = 36 + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = "26.3.11579264" // This version must exactly match the version of the NDK that the recipe pulls from CIPD. + ndkPath = systemNdkPath + } sourceSets { applicationVariants.all { variant -> diff --git a/dev/integration_tests/external_textures/android/app/build.gradle b/dev/integration_tests/external_textures/android/app/build.gradle index eec5faba976..43f669edeed 100644 --- a/dev/integration_tests/external_textures/android/app/build.gradle +++ b/dev/integration_tests/external_textures/android/app/build.gradle @@ -19,6 +19,14 @@ android { namespace = "io.flutter.externalui" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 diff --git a/dev/integration_tests/flavors/android/app/build.gradle b/dev/integration_tests/flavors/android/app/build.gradle index 37ef7948ee4..5f747a3671b 100644 --- a/dev/integration_tests/flavors/android/app/build.gradle +++ b/dev/integration_tests/flavors/android/app/build.gradle @@ -19,6 +19,14 @@ android { namespace = "com.yourcompany.flavors" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 diff --git a/dev/integration_tests/flutter_gallery/android/app/build.gradle b/dev/integration_tests/flutter_gallery/android/app/build.gradle index 5b586b2b12e..125067a4c99 100644 --- a/dev/integration_tests/flutter_gallery/android/app/build.gradle +++ b/dev/integration_tests/flutter_gallery/android/app/build.gradle @@ -48,6 +48,14 @@ android { namespace = "io.flutter.demo.gallery" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 diff --git a/dev/integration_tests/module_host_with_custom_build_v2_embedding/app/build.gradle b/dev/integration_tests/module_host_with_custom_build_v2_embedding/app/build.gradle index 93fc96059a4..8bd0cb226a5 100644 --- a/dev/integration_tests/module_host_with_custom_build_v2_embedding/app/build.gradle +++ b/dev/integration_tests/module_host_with_custom_build_v2_embedding/app/build.gradle @@ -8,6 +8,14 @@ android { namespace = "io.flutter.addtoapp" compileSdk = 36 + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = "26.3.11579264" // This version must exactly match the version of the NDK that the recipe pulls from CIPD. + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 diff --git a/dev/integration_tests/platform_interaction/android/app/build.gradle b/dev/integration_tests/platform_interaction/android/app/build.gradle index 2e01c694558..3736d021dc7 100644 --- a/dev/integration_tests/platform_interaction/android/app/build.gradle +++ b/dev/integration_tests/platform_interaction/android/app/build.gradle @@ -19,6 +19,14 @@ android { namespace = "com.yourcompany.platforminteraction" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 diff --git a/dev/integration_tests/pure_android_host_apps/android_custom_host_app/SampleApp/build.gradle b/dev/integration_tests/pure_android_host_apps/android_custom_host_app/SampleApp/build.gradle index 5e505a18ba1..35274837a3a 100644 --- a/dev/integration_tests/pure_android_host_apps/android_custom_host_app/SampleApp/build.gradle +++ b/dev/integration_tests/pure_android_host_apps/android_custom_host_app/SampleApp/build.gradle @@ -8,6 +8,14 @@ android { namespace = "io.flutter.add2app" compileSdk = 36 + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = "26.3.11579264" // This version must exactly match the version of the NDK that the recipe pulls from CIPD. + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 diff --git a/dev/integration_tests/pure_android_host_apps/android_host_app_v2_embedding/app/build.gradle b/dev/integration_tests/pure_android_host_apps/android_host_app_v2_embedding/app/build.gradle index 1d35e888f43..f607202f8f4 100644 --- a/dev/integration_tests/pure_android_host_apps/android_host_app_v2_embedding/app/build.gradle +++ b/dev/integration_tests/pure_android_host_apps/android_host_app_v2_embedding/app/build.gradle @@ -8,6 +8,15 @@ android { namespace = "io.flutter.add2app" compileSdk = 36 + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = "26.3.11579264" // This version must exactly match the version of the NDK that the recipe pulls from CIPD. + ndkPath = systemNdkPath + } + compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 diff --git a/dev/integration_tests/pure_android_host_apps/host_app_kotlin_gradle_dsl/app/build.gradle.kts b/dev/integration_tests/pure_android_host_apps/host_app_kotlin_gradle_dsl/app/build.gradle.kts index 97e78442e69..12f2af23205 100644 --- a/dev/integration_tests/pure_android_host_apps/host_app_kotlin_gradle_dsl/app/build.gradle.kts +++ b/dev/integration_tests/pure_android_host_apps/host_app_kotlin_gradle_dsl/app/build.gradle.kts @@ -7,6 +7,14 @@ android { namespace = "com.example.myapplication" compileSdk = 36 + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + val systemNdkPath: String? = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = "26.3.11579264" // This version must exactly match the version of the NDK that the recipe pulls from CIPD. + ndkPath = systemNdkPath + } defaultConfig { applicationId = "com.example.myapplication" diff --git a/dev/integration_tests/release_smoke_test/android/app/build.gradle b/dev/integration_tests/release_smoke_test/android/app/build.gradle index 85a056cd998..996b399624d 100644 --- a/dev/integration_tests/release_smoke_test/android/app/build.gradle +++ b/dev/integration_tests/release_smoke_test/android/app/build.gradle @@ -30,6 +30,14 @@ android { namespace = "com.example.release_smoke_test" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 diff --git a/dev/integration_tests/spell_check/android/app/build.gradle b/dev/integration_tests/spell_check/android/app/build.gradle index b646114b777..9cfd7036664 100644 --- a/dev/integration_tests/spell_check/android/app/build.gradle +++ b/dev/integration_tests/spell_check/android/app/build.gradle @@ -30,6 +30,14 @@ android { namespace = "com.example.spell_check" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 diff --git a/dev/integration_tests/ui/android/app/build.gradle b/dev/integration_tests/ui/android/app/build.gradle index e8c37784683..9fea9e220bf 100644 --- a/dev/integration_tests/ui/android/app/build.gradle +++ b/dev/integration_tests/ui/android/app/build.gradle @@ -12,6 +12,14 @@ android { namespace = "com.yourcompany.integration_ui" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 diff --git a/dev/manual_tests/android/app/build.gradle b/dev/manual_tests/android/app/build.gradle index 7b8cb0970f8..775ce686a4d 100644 --- a/dev/manual_tests/android/app/build.gradle +++ b/dev/manual_tests/android/app/build.gradle @@ -30,6 +30,14 @@ android { namespace = "dev.flutter.manual_tests" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 diff --git a/dev/tracing_tests/android/app/build.gradle b/dev/tracing_tests/android/app/build.gradle index d82f6a2d973..cbaae76869f 100644 --- a/dev/tracing_tests/android/app/build.gradle +++ b/dev/tracing_tests/android/app/build.gradle @@ -30,6 +30,14 @@ android { namespace = "com.example.tracing_tests" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 diff --git a/engine/src/build/config/android/config.gni b/engine/src/build/config/android/config.gni index df0169a8ef3..faf04fe2c9c 100644 --- a/engine/src/build/config/android/config.gni +++ b/engine/src/build/config/android/config.gni @@ -53,8 +53,7 @@ if (is_android) { android_sdk = "${android_sdk_root}/platforms/android-${android_sdk_version}" # Path to the Android NDK and SDK. - android_ndk_version = "28.2.13676358" - android_ndk_root = "//flutter/third_party/android_tools/sdk/ndk/$android_ndk_version" + android_ndk_root = "//flutter/third_party/android_tools/ndk" android_ndk_include_dir = "$android_ndk_root/usr/include" android_sdk = "${android_sdk_root}/platforms/android-${android_sdk_version}" diff --git a/engine/src/flutter/ci/binary_size_treemap.sh b/engine/src/flutter/ci/binary_size_treemap.sh index 52e2bea6d8a..769423c5c46 100755 --- a/engine/src/flutter/ci/binary_size_treemap.sh +++ b/engine/src/flutter/ci/binary_size_treemap.sh @@ -22,9 +22,8 @@ if [ "$(uname)" == "Darwin" ]; then else NDK_PLATFORM="linux-x86_64" fi -NDK_VERSION="28.2.13676358" -ADDR2LINE="flutter/third_party/android_tools/sdk/ndk/$NDK_VERSION/toolchains/llvm/prebuilt/$NDK_PLATFORM/bin/llvm-addr2line" -NM="flutter/third_party/android_tools/sdk/ndk/$NDK_VERSION/toolchains/llvm/prebuilt/$NDK_PLATFORM/bin/llvm-nm" +ADDR2LINE="flutter/third_party/android_tools/ndk/toolchains/llvm/prebuilt/$NDK_PLATFORM/bin/llvm-addr2line" +NM="flutter/third_party/android_tools/ndk/toolchains/llvm/prebuilt/$NDK_PLATFORM/bin/llvm-nm" # Run the binary size script from the buildroot directory so the treemap path # navigation will start from there. diff --git a/engine/src/flutter/sky/tools/flutter_gdb b/engine/src/flutter/sky/tools/flutter_gdb index d14b56bc4c8..3e7e373d376 100755 --- a/engine/src/flutter/sky/tools/flutter_gdb +++ b/engine/src/flutter/sky/tools/flutter_gdb @@ -26,7 +26,6 @@ previous run for a given device, then you can skip this step by passing """ ADB_LOCAL_PATH = 'flutter/third_party/android_tools/sdk/platform-tools/adb' -ANDROID_NDK_VERSION = '28.2.13676358' def _get_flutter_root(): @@ -85,7 +84,7 @@ class GdbClient(object): SYSTEM_LIBS_PATH = '/tmp/flutter_gdb_device_libs' def _gdb_local_path(self): - GDB_LOCAL_PATH = ('flutter/third_party/android_tools/sdk/ndk/%s/prebuilt/%%s-x86_64/bin/gdb' % ANDROID_NDK_VERSION) + GDB_LOCAL_PATH = ('flutter/third_party/android_tools/ndk/prebuilt/%s-x86_64/bin/gdb') if sys.platform.startswith('darwin'): return GDB_LOCAL_PATH % 'darwin' else: @@ -193,7 +192,7 @@ class GdbServer(object): return 1 abi = _get_device_abi(adb_command) - gdb_server_local_path = 'flutter/third_party/android_tools/sdk/ndk/%s/prebuilt/android-%s/gdbserver/gdbserver' % (ANDROID_NDK_VERSION, abi) + gdb_server_local_path = 'flutter/third_party/android_tools/ndk/prebuilt/android-%s/gdbserver/gdbserver' % abi # Copy gdbserver to the package's data directory. subprocess.check_call(adb_command + ['push', diff --git a/engine/src/flutter/testing/analyze_core_dump.sh b/engine/src/flutter/testing/analyze_core_dump.sh index 72bdbae9abe..bf558842048 100755 --- a/engine/src/flutter/testing/analyze_core_dump.sh +++ b/engine/src/flutter/testing/analyze_core_dump.sh @@ -18,8 +18,7 @@ if [ "$UNAME" == "Linux" ]; then if [ -x "$(command -v gdb)" ]; then GDB=gdb else - NDK_VERSION="28.2.13676358" - GDB=$BUILDROOT/flutter/third_party/android_tools/sdk/ndk/$NDK_VERSION/prebuilt/linux-x86_64/bin/gdb + GDB=$BUILDROOT/flutter/third_party/android_tools/ndk/prebuilt/linux-x86_64/bin/gdb fi echo "GDB=$GDB" $GDB $EXE $CORE --batch -ex "thread apply all bt" > $OUTPUT diff --git a/engine/src/flutter/tools/android_sdk/create_cipd_packages.sh b/engine/src/flutter/tools/android_sdk/create_cipd_packages.sh index 39aa44592e5..3ad8bf0a901 100755 --- a/engine/src/flutter/tools/android_sdk/create_cipd_packages.sh +++ b/engine/src/flutter/tools/android_sdk/create_cipd_packages.sh @@ -122,6 +122,23 @@ for platform in "${platforms[@]}"; do done done + # Special treatment for NDK to move to expected directory. + # Instead of the ndk being in `sdk/ndk/../`, it will be + # in `ndk/`. + # This simplifies the build scripts, and enables version difference between + # the Dart and Flutter build while reusing the same build rules. + # See https://github.com/flutter/flutter/issues/136666#issuecomment-1805467578 + mv $upload_dir/sdk/ndk $upload_dir/ndk-bundle + ndk_sub_paths=`find $upload_dir/ndk-bundle -maxdepth 1 -type d` + ndk_sub_paths_arr=($ndk_sub_paths) + mv ${ndk_sub_paths_arr[1]} $upload_dir/ndk + rm -rf $upload_dir/ndk-bundle + + if [[ ! -d "$upload_dir/ndk" ]]; then + echo "Failure to bundle ndk for platform" + exit 1 + fi + # Accept all licenses to ensure they are generated and uploaded. yes "y" | $sdkmanager_path --licenses --sdk_root=$sdk_root cp -a "$sdk_root/licenses" "$upload_dir/sdk" diff --git a/examples/flutter_view/android/app/build.gradle b/examples/flutter_view/android/app/build.gradle index 268d6aefc0d..efa7cccc482 100644 --- a/examples/flutter_view/android/app/build.gradle +++ b/examples/flutter_view/android/app/build.gradle @@ -11,6 +11,14 @@ android { namespace = "com.example.view" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 diff --git a/examples/hello_world/android/app/build.gradle.kts b/examples/hello_world/android/app/build.gradle.kts index 175e23095a7..d0e5ec689c8 100644 --- a/examples/hello_world/android/app/build.gradle.kts +++ b/examples/hello_world/android/app/build.gradle.kts @@ -11,6 +11,15 @@ android { namespace = "io.flutter.examples.hello_world" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + val systemNdkPath: String? = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } + compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 diff --git a/examples/image_list/android/app/build.gradle b/examples/image_list/android/app/build.gradle index 073fbef80c9..ecacdc2d0d8 100644 --- a/examples/image_list/android/app/build.gradle +++ b/examples/image_list/android/app/build.gradle @@ -29,6 +29,14 @@ android { namespace = "com.example.image_list" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 diff --git a/examples/layers/android/app/build.gradle b/examples/layers/android/app/build.gradle index b743e9262dc..a954ffd2494 100644 --- a/examples/layers/android/app/build.gradle +++ b/examples/layers/android/app/build.gradle @@ -11,6 +11,14 @@ android { namespace = "io.flutter.examples.Layers" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 diff --git a/examples/platform_channel/android/app/build.gradle b/examples/platform_channel/android/app/build.gradle index 3572148b067..91546cbd1c6 100644 --- a/examples/platform_channel/android/app/build.gradle +++ b/examples/platform_channel/android/app/build.gradle @@ -29,6 +29,14 @@ android { namespace = "com.example.platformchannel" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 diff --git a/examples/platform_view/android/app/build.gradle b/examples/platform_view/android/app/build.gradle index e99b4d5889f..1e3b076754f 100644 --- a/examples/platform_view/android/app/build.gradle +++ b/examples/platform_view/android/app/build.gradle @@ -29,6 +29,14 @@ android { namespace = "io.flutter.examples.platform_view" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + String systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 diff --git a/packages/integration_test/example/android/app/build.gradle.kts b/packages/integration_test/example/android/app/build.gradle.kts index cb5b92fcc40..bc21ccd97cf 100644 --- a/packages/integration_test/example/android/app/build.gradle.kts +++ b/packages/integration_test/example/android/app/build.gradle.kts @@ -13,6 +13,15 @@ android { namespace = "com.example.integration_test_example" compileSdk = flutter.compileSdkVersion + // Flutter's CI installs the NDK at a non-standard path. + // This non-standard structure is initially created by + // https://github.com/flutter/engine/blob/3.27.0/tools/android_sdk/create_cipd_packages.sh. + val systemNdkPath = System.getenv("ANDROID_NDK_PATH") + if (systemNdkPath != null) { + ndkVersion = flutter.ndkVersion + ndkPath = systemNdkPath + } + compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8