From c0b808c9ed37ca92b5fa91dcec4e486ba3dd14e8 Mon Sep 17 00:00:00 2001 From: Gray Mackall <34871572+gmackall@users.noreply.github.com> Date: Mon, 15 Dec 2025 12:18:31 -0800 Subject: [PATCH] Unmodified android sdk bundle (#179647) 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: DoLT Co-authored-by: Gray Mackall Co-authored-by: John "codefu" McDole --- .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, 265 insertions(+), 421 deletions(-) diff --git a/.ci.yaml b/.ci.yaml index 88161c7ae8e..833722cf839 100644 --- a/.ci.yaml +++ b/.ci.yaml @@ -51,7 +51,7 @@ platform_properties: ] dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"} + {"dependency": "android_sdk", "version": "version:36v4unmodified"} ] shard: framework_tests subshard: misc @@ -908,7 +908,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"dependency": "open_jdk", "version": "version:21"} ] shard: tool_tests @@ -1729,7 +1729,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"dependency": "open_jdk", "version": "version:21"} ] shard: tool_tests @@ -3715,7 +3715,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"} + {"dependency": "android_sdk", "version": "version:36v4unmodified"} ] 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:36v4"} + {"dependency": "android_sdk", "version": "version:36v4unmodified"} ] shard: framework_tests subshard: misc @@ -4123,7 +4123,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"dependency": "open_jdk", "version": "version:21"} ] tags: > @@ -4162,7 +4162,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"dependency": "open_jdk", "version": "version:21"} ] tags: > @@ -4182,7 +4182,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"dependency": "open_jdk", "version": "version:21"} ] tags: > @@ -4202,7 +4202,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"dependency": "open_jdk", "version": "version:21"} ] tags: > @@ -4223,7 +4223,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"dependency": "open_jdk", "version": "version:21"} ] tags: > @@ -4298,7 +4298,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"dependency": "open_jdk", "version": "version:21"} ] tags: > @@ -4380,7 +4380,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"dependency": "open_jdk", "version": "version:21"} ] shard: tool_tests @@ -5665,7 +5665,7 @@ targets: add_recipes_cq: "true" dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"} + {"dependency": "android_sdk", "version": "version:36v4unmodified"} ] shard: framework_tests subshard: misc @@ -5989,7 +5989,7 @@ targets: properties: dependencies: >- [ - {"dependency": "android_sdk", "version": "version:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"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:36v4"}, + {"dependency": "android_sdk", "version": "version:36v4unmodified"}, {"dependency": "open_jdk", "version": "version:21"} ] shard: tool_tests diff --git a/DEPS b/DEPS index a4979dbe737..71b92e12724 100644 --- a/DEPS +++ b/DEPS @@ -615,7 +615,7 @@ deps = { 'packages': [ { 'package': 'flutter/android/sdk/all/${{platform}}', - 'version': 'version:36v3' + 'version': 'version:36v4unmodified' } ], 'condition': 'download_android_deps', diff --git a/dev/a11y_assessments/android/app/build.gradle b/dev/a11y_assessments/android/app/build.gradle index 43f539fe081..b3deaa733e3 100644 --- a/dev/a11y_assessments/android/app/build.gradle +++ b/dev/a11y_assessments/android/app/build.gradle @@ -36,14 +36,6 @@ 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 c01d3bad3b8..ca435312615 100644 --- a/dev/benchmarks/complex_layout/android/app/build.gradle +++ b/dev/benchmarks/complex_layout/android/app/build.gradle @@ -29,14 +29,6 @@ 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 8b7601c9504..a9bdfc5515b 100644 --- a/dev/benchmarks/macrobenchmarks/android/app/build.gradle +++ b/dev/benchmarks/macrobenchmarks/android/app/build.gradle @@ -29,14 +29,6 @@ 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 9528b334612..d1cf0fd4623 100644 --- a/dev/benchmarks/microbenchmarks/android/app/build.gradle +++ b/dev/benchmarks/microbenchmarks/android/app/build.gradle @@ -29,14 +29,6 @@ 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 0cc61e7411b..74da8986b62 100644 --- a/dev/benchmarks/multiple_flutters/android/app/build.gradle +++ b/dev/benchmarks/multiple_flutters/android/app/build.gradle @@ -16,14 +16,6 @@ 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 68d89d9cd11..5c412461136 100644 --- a/dev/benchmarks/platform_views_layout/android/app/build.gradle +++ b/dev/benchmarks/platform_views_layout/android/app/build.gradle @@ -29,14 +29,6 @@ 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 036681f9b26..9f850b0aac7 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,14 +29,6 @@ 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 8d20874cfc5..cd5380ae1bd 100644 --- a/dev/benchmarks/test_apps/stocks/android/app/build.gradle +++ b/dev/benchmarks/test_apps/stocks/android/app/build.gradle @@ -29,14 +29,6 @@ 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 6ec13566772..2429befa3d5 100644 --- a/dev/bots/run_command.dart +++ b/dev/bots/run_command.dart @@ -100,11 +100,18 @@ 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: environment, + environment: finalEnvironment, ); return Command._( process, @@ -143,6 +150,76 @@ 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 775da825294..8b96ed6810e 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,6 +47,7 @@ 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 cb5c39715f6..def1f12bb86 100644 --- a/dev/devicelab/lib/framework/utils.dart +++ b/dev/devicelab/lib/framework/utils.dart @@ -9,6 +9,7 @@ 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'; @@ -283,7 +284,17 @@ Future startProcess( }) async { final command = '$executable ${arguments?.join(" ") ?? ""}'; final String finalWorkingDirectory = workingDirectory ?? cwd; - final newEnvironment = Map.from(environment ?? {}); + 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; + } + newEnvironment['BOT'] = isBot ? 'true' : 'false'; newEnvironment['LANG'] = 'en_US.UTF-8'; print('Executing "$command" in "$finalWorkingDirectory" with environment $newEnvironment'); @@ -796,13 +807,66 @@ 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))) { - throw FileSystemException('Expected file to exist.', file); + fail('File not found: $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 e6d0f6bc65d..5b9767f9da2 100644 --- a/dev/devicelab/test/tasks/build_test_task_test.dart +++ b/dev/devicelab/test/tasks/build_test_task_test.dart @@ -62,8 +62,10 @@ void main() { final capturedPrint = capturedPrintLines.toString(); expect( capturedPrint, - contains( - 'with environment {FLUTTER_DEVICELAB_DEVICEID: FAKE_SUCCESS, BOT: true, LANG: en_US.UTF-8}', + allOf( + contains('with environment {'), + contains('FLUTTER_DEVICELAB_DEVICEID: FAKE_SUCCESS'), + contains('BOT: true'), ), ); 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 5816503114d..a39ea11bc83 100644 --- a/dev/integration_tests/android_engine_test/android/app/build.gradle +++ b/dev/integration_tests/android_engine_test/android/app/build.gradle @@ -13,14 +13,6 @@ 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 491fac8de70..333bd28889e 100644 --- a/dev/integration_tests/android_semantics_testing/android/app/build.gradle +++ b/dev/integration_tests/android_semantics_testing/android/app/build.gradle @@ -20,14 +20,6 @@ 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 e6f0187e1e7..73075d64ecf 100644 --- a/dev/integration_tests/android_verified_input/android/app/build.gradle +++ b/dev/integration_tests/android_verified_input/android/app/build.gradle @@ -30,15 +30,6 @@ 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 3524a4baa11..d379fcb5620 100644 --- a/dev/integration_tests/android_views/android/app/build.gradle +++ b/dev/integration_tests/android_views/android/app/build.gradle @@ -29,14 +29,6 @@ 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 cb21db12dbb..3d32be0f083 100644 --- a/dev/integration_tests/channels/android/app/build.gradle +++ b/dev/integration_tests/channels/android/app/build.gradle @@ -30,15 +30,6 @@ 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 9154ce901c2..7eea528ab17 100644 --- a/dev/integration_tests/deferred_components_test/android/app/build.gradle +++ b/dev/integration_tests/deferred_components_test/android/app/build.gradle @@ -36,19 +36,9 @@ 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 2b0ec98e79d..ba3625c33d9 100644 --- a/dev/integration_tests/deferred_components_test/android/component1/build.gradle +++ b/dev/integration_tests/deferred_components_test/android/component1/build.gradle @@ -26,14 +26,6 @@ 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 43f669edeed..eec5faba976 100644 --- a/dev/integration_tests/external_textures/android/app/build.gradle +++ b/dev/integration_tests/external_textures/android/app/build.gradle @@ -19,14 +19,6 @@ 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 5f747a3671b..37ef7948ee4 100644 --- a/dev/integration_tests/flavors/android/app/build.gradle +++ b/dev/integration_tests/flavors/android/app/build.gradle @@ -19,14 +19,6 @@ 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 125067a4c99..5b586b2b12e 100644 --- a/dev/integration_tests/flutter_gallery/android/app/build.gradle +++ b/dev/integration_tests/flutter_gallery/android/app/build.gradle @@ -48,14 +48,6 @@ 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 8bd0cb226a5..93fc96059a4 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,14 +8,6 @@ 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 3736d021dc7..2e01c694558 100644 --- a/dev/integration_tests/platform_interaction/android/app/build.gradle +++ b/dev/integration_tests/platform_interaction/android/app/build.gradle @@ -19,14 +19,6 @@ 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 35274837a3a..5e505a18ba1 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,14 +8,6 @@ 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 f607202f8f4..1d35e888f43 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,15 +8,6 @@ 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 12f2af23205..97e78442e69 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,14 +7,6 @@ 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 996b399624d..85a056cd998 100644 --- a/dev/integration_tests/release_smoke_test/android/app/build.gradle +++ b/dev/integration_tests/release_smoke_test/android/app/build.gradle @@ -30,14 +30,6 @@ 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 9cfd7036664..b646114b777 100644 --- a/dev/integration_tests/spell_check/android/app/build.gradle +++ b/dev/integration_tests/spell_check/android/app/build.gradle @@ -30,14 +30,6 @@ 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 9fea9e220bf..e8c37784683 100644 --- a/dev/integration_tests/ui/android/app/build.gradle +++ b/dev/integration_tests/ui/android/app/build.gradle @@ -12,14 +12,6 @@ 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 775ce686a4d..7b8cb0970f8 100644 --- a/dev/manual_tests/android/app/build.gradle +++ b/dev/manual_tests/android/app/build.gradle @@ -30,14 +30,6 @@ 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 cbaae76869f..d82f6a2d973 100644 --- a/dev/tracing_tests/android/app/build.gradle +++ b/dev/tracing_tests/android/app/build.gradle @@ -30,14 +30,6 @@ 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 faf04fe2c9c..df0169a8ef3 100644 --- a/engine/src/build/config/android/config.gni +++ b/engine/src/build/config/android/config.gni @@ -53,7 +53,8 @@ if (is_android) { android_sdk = "${android_sdk_root}/platforms/android-${android_sdk_version}" # Path to the Android NDK and SDK. - android_ndk_root = "//flutter/third_party/android_tools/ndk" + android_ndk_version = "28.2.13676358" + android_ndk_root = "//flutter/third_party/android_tools/sdk/ndk/$android_ndk_version" 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 769423c5c46..52e2bea6d8a 100755 --- a/engine/src/flutter/ci/binary_size_treemap.sh +++ b/engine/src/flutter/ci/binary_size_treemap.sh @@ -22,8 +22,9 @@ if [ "$(uname)" == "Darwin" ]; then else NDK_PLATFORM="linux-x86_64" fi -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" +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" # 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 3e7e373d376..d14b56bc4c8 100755 --- a/engine/src/flutter/sky/tools/flutter_gdb +++ b/engine/src/flutter/sky/tools/flutter_gdb @@ -26,6 +26,7 @@ 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(): @@ -84,7 +85,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/ndk/prebuilt/%s-x86_64/bin/gdb') + GDB_LOCAL_PATH = ('flutter/third_party/android_tools/sdk/ndk/%s/prebuilt/%%s-x86_64/bin/gdb' % ANDROID_NDK_VERSION) if sys.platform.startswith('darwin'): return GDB_LOCAL_PATH % 'darwin' else: @@ -192,7 +193,7 @@ class GdbServer(object): return 1 abi = _get_device_abi(adb_command) - gdb_server_local_path = 'flutter/third_party/android_tools/ndk/prebuilt/android-%s/gdbserver/gdbserver' % abi + gdb_server_local_path = 'flutter/third_party/android_tools/sdk/ndk/%s/prebuilt/android-%s/gdbserver/gdbserver' % (ANDROID_NDK_VERSION, 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 bf558842048..72bdbae9abe 100755 --- a/engine/src/flutter/testing/analyze_core_dump.sh +++ b/engine/src/flutter/testing/analyze_core_dump.sh @@ -18,7 +18,8 @@ if [ "$UNAME" == "Linux" ]; then if [ -x "$(command -v gdb)" ]; then GDB=gdb else - GDB=$BUILDROOT/flutter/third_party/android_tools/ndk/prebuilt/linux-x86_64/bin/gdb + NDK_VERSION="28.2.13676358" + GDB=$BUILDROOT/flutter/third_party/android_tools/sdk/ndk/$NDK_VERSION/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 3ad8bf0a901..39aa44592e5 100755 --- a/engine/src/flutter/tools/android_sdk/create_cipd_packages.sh +++ b/engine/src/flutter/tools/android_sdk/create_cipd_packages.sh @@ -122,23 +122,6 @@ 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 efa7cccc482..268d6aefc0d 100644 --- a/examples/flutter_view/android/app/build.gradle +++ b/examples/flutter_view/android/app/build.gradle @@ -11,14 +11,6 @@ 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 d0e5ec689c8..175e23095a7 100644 --- a/examples/hello_world/android/app/build.gradle.kts +++ b/examples/hello_world/android/app/build.gradle.kts @@ -11,15 +11,6 @@ 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 ecacdc2d0d8..073fbef80c9 100644 --- a/examples/image_list/android/app/build.gradle +++ b/examples/image_list/android/app/build.gradle @@ -29,14 +29,6 @@ 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 a954ffd2494..b743e9262dc 100644 --- a/examples/layers/android/app/build.gradle +++ b/examples/layers/android/app/build.gradle @@ -11,14 +11,6 @@ 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 91546cbd1c6..3572148b067 100644 --- a/examples/platform_channel/android/app/build.gradle +++ b/examples/platform_channel/android/app/build.gradle @@ -29,14 +29,6 @@ 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 1e3b076754f..e99b4d5889f 100644 --- a/examples/platform_view/android/app/build.gradle +++ b/examples/platform_view/android/app/build.gradle @@ -29,14 +29,6 @@ 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 bc21ccd97cf..cb5b92fcc40 100644 --- a/packages/integration_test/example/android/app/build.gradle.kts +++ b/packages/integration_test/example/android/app/build.gradle.kts @@ -13,15 +13,6 @@ 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