jesswrd f8b544a7ff
Update Engine to Android 16 (API 36) (#166796)
Following the directions
[here](https://github.com/flutter/flutter/blob/main/docs/platforms/android/Upgrading-Engine's-Android-API-version.md)
to update engine to android 16.

1. Uploaded api 36 SDK to CIPD using the script from the above docs
2. Updates in Engine to use api 36
     - Updated buildroot
     - Updated SDK CIPD package in `DEPS`
     - Updated android build tools
     - Updated `targetsdk` and `compilesdk`
3. Confirm the engine sucessfully builds. I ran `et build -c
android_debug_unopt_arm64`
4. Bumped the gradle version in this PR due to seeing this warning
[here](https://github.com/flutter/flutter/blob/master/docs/platforms/android/New-Android-version.md#:~:text=Update%20Gradle/AGP%20support).

Note: Post mono-repo merge, we can now update buildroot and `DEPS` in
the same PR 🎊 !!! Also, updated the Clang path due to use of a new Clang
version in the bumped ndk.

Partially Addresses #166950

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

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

<!-- Links -->
[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
2025-05-08 19:46:59 +00:00
..

Updating the Embedding Dependencies

The instructions in this README explain how to create a CIPD package that contains the build-time dependencies of the Android embedding of the Engine, and the dependencies of the in-tree testing framework. The Android embedder is shipped to Flutter end-users, but these build-time dependencies are not. Therefore, the license script can skip over the destination of the CIPD package in an Engine checkout at src/third_party/android_embedding_dependencies. Even so, the CIPD package should contain a LICENSE file, and the instructions below explain how to fetch the license information for the dependencies.

Requirements

  1. If you have a flutter/engine checkout, then you should already have Depot tools on your path.
  2. You should have a copy of gradle in a flutter/engine checkout under src/third_party/gradle/bin/gradle.

Steps

  1. Update src/flutter/tools/androidx/files.json. (This file includes the Maven dependencies used to build Flutter apps).
  2. cd into this directory: src/flutter/tools/cipd/android_embedding_bundle.
  3. Run gradle downloadLicenses
  4. Run gradle updateDependencies
  5. Examine the file ./build/reports/license/license-dependency.xml. If it contains licenses other than "The Apache License, Version 2.0" or something very similar, STOP. Ask Hixie for adivce on how to proceed.
  6. Copy or move the lib/ directory to src/third_party/android_embedding_dependencies/, overwriting its contents, and ensure the Android build still works.
  7. Run cipd create --pkg-def cipd.yaml -tag last_updated:"$version_tag" where $version_tag is the output of date +%Y-%m-%dT%T%z.
  8. Update the DEPS file entry for android_embedding_dependencies with the new tag: last_updated:"$version_tag".
  9. Update the GN list embedding_dependencies_jars in src/flutter/shell/platform/android/BUILD.gn.

Updating Gradle Lockfiles in the Framework After Adding Dependencies

If you land a pr that changes the versions of the embedding dependencies, or adds a new dependency and makes use of it, you will also need to perform a manual roll of that change to the framework that re-generates the Gradle lockfiles using the script at <framework_repo>/dev/tools/bin/generate_gradle_lockfiles.dart (run with the --no-gradle-generation and --no-exclusion flags).