| # Flutter Tools for Android |
| |
| This section of the Flutter repository contains the command line developer tools |
| for building Flutter applications on Android. What follows are some notes about |
| updating this part of the tool. |
| |
| ## Updating Android dependencies |
| The Android dependencies that Flutter uses to run on Android |
| include the Android NDK and SDK versions, Gradle, the Kotlin Gradle Plugin, |
| and the Android Gradle Plugin (AGP). The template versions of these |
| dependencies can be found in [gradle_utils.dart](gradle_utils.dart). |
| |
| Follow the guides below when*... |
| |
| ### Updating the template version of... |
| |
| #### The Android SDK & NDK |
| All of the Android SDK/NDK versions noted in `gradle_utils.dart` |
| (`compileSdkVersion`, `minSdkVersion`, `targetSdkVersion`, `ndkVersion`) |
| versions should match the values in Flutter Gradle Plugin (`FlutterExtension`), |
| so updating any of these versions also requires an update in |
| [FlutterExtension](../../../gradle/src/main/kotlin/FlutterExtention.kt). |
| |
| When updating the Android `compileSdkVersion`, `minSdkVersion`, or |
| `targetSdkVersion`, make sure that: |
| - Framework integration & benchmark tests are running with at least that SDK |
| version. |
| - Flutter tools tests that perform String checks with the current template |
| SDK versions are updated (you should see these fail if you do not fix them |
| preemptively). |
| |
| Also, make sure to also update to the same version in the following places: |
| - The versions for error/warn in `packages/flutter_tools/gradle/src/main/kotlin/DependencyVersionChecker.kt`. |
| - The version in the dependencies block in `packages/flutter_tools/gradle/build.gradle.kts`. |
| - The flutter min version in `engine/src/flutter/shell/platform/android/io/flutter/Build.java` |
| - The versions used when engine testing in `engine/src/flutter/shell/platform/android/test_runner/build.gradle` |
| - The versions used when working in engine/shell in `engine/src/flutter/shell/platform/android/build.gradle` |
| |
| #### Gradle |
| When updating the Gradle version used in project templates |
| (`templateDefaultGradleVersion`), make sure that: |
| - Framework integration & benchmark tests are running with at least this Gradle |
| version. |
| - Flutter tools tests that perform String checks with the current template |
| Gradle version are updated (you should see these fail if you do not fix them |
| preemptively). |
| |
| #### The Kotlin Gradle Plugin |
| When updating the Kotlin Gradle Plugin (KGP) version used in project templates |
| (`templateKotlinGradlePluginVersion`), make sure that the framework integration |
| & benchmark tests are running with at least this KGP version. |
| |
| When updating the `warnKGPVersion` or `errorKGPVersion` ensure that versions used in |
| `dev/tools/bin/generate_gradle_lockfiles.dart` are updated if needed then regenerate |
| build.gradle(.kts) files. |
| |
| For information about the latest version, check https://kotlinlang.org/docs/releases.html#release-details. |
| |
| #### The Android Gradle Plugin (AGP) |
| When updating the Android Gradle Plugin (AGP) versions used in project templates |
| (`templateAndroidGradlePluginVersion`, `templateAndroidGradlePluginVersionForModule`), |
| make sure that: |
| - Framework integration & benchmark tests are running with at least this AGP |
| version. |
| - Flutter tools tests that perform String checks with the current template |
| AGP versions are updated (you should see these fail if you do not fix them |
| preemptively). |
| |
| ### A new version becomes available for... |
| |
| #### Gradle |
| When new versions of Gradle become available, make sure to: |
| - Check if the maximum version of Gradle that we support |
| (`maxKnownAndSupportedGradleVersion`) can be updated, and if so, take the |
| necessary steps to ensure we are testing this version in CI. |
| - Check that the Java version that is one higher than we currently support |
| (`oneMajorVersionHigherJavaVersion`) based on current maximum supported |
| Gradle version is up-to-date. |
| - Update the `_javaGradleCompatList` that contains the Java/Gradle |
| compatibility information known to the tool. |
| - Update the test cases in [gradle_utils_test.dart](../../..test/general.shard/android/gradle_utils_test.dart) that test compatibility between Java and Gradle versions |
| (relevant tests should fail if you do not fix them preemptively, but should also |
| be marked inline). |
| - Update the test cases in [create_test.dart](../../../test/commands.shard/permeable/create_test.dart) that test for a warning for Java/Gradle incompatibilities as needed |
| (relevant tests should fail if you do not fix them preemptively). |
| |
| For more information about the latest version, check https://gradle.org/releases/. |
| |
| #### The Android Gradle Plugin (AGP) |
| When new versions of the Android Gradle Plugin become available, make sure to: |
| - Update the maximum version of AGP that we know of (`maxKnownAgpVersion`). |
| - Check if the maximum version of AGP that we support |
| (`maxKnownAndSupportedAgpVersion`) can be updated, and if so, take the necessary |
| steps to ensure that we are testing this version in CI. |
| - Update the `_javaAgpCompatList` that contains the Java/AGP compatibility |
| information known to the tool. |
| - Update the test cases in [gradle_utils_test.dart](../../..test/general.shard/android/gradle_utils_test.dart) that test compatibility between Java and AGP versions |
| (relevant tests should fail if you do not fix them preemptively, but should also |
| be marked inline). |
| - Update the test cases in [create_test.dart](../../../test/commands.shard/permeable/create_test.dart) that test for a warning for Java/AGP incompatibilities as needed |
| (relevant tests should fail if you do not fix them preemptively). |
| |
| For information about the latest version, check https://developer.android.com/studio/releases/gradle-plugin#updating-gradle. |
| |
| \* There is an ongoing effort to reduce these steps; see https://github.com/flutter/flutter/issues/134780. |