From bb637f3128e171ab51a3952584e1208718ab0396 Mon Sep 17 00:00:00 2001 From: Gray Mackall <34871572+gmackall@users.noreply.github.com> Date: Wed, 10 Jul 2024 14:37:26 -0700 Subject: [PATCH] Reland "Upgrade template Gradle, App AGP, Module AGP, and Kotlin versions, and tests"... but no longer upgrade module AGP version (#151433) Relands https://github.com/flutter/flutter/pull/150969, but removes the upgrade to the module AGP version. The reason is that a more complicated change is required because in AGP 8.0 software components are no longer generated by default, but rather only generated for variants that are configured to be published using the publishing DSL (see the `android.disableAutomaticComponentCreation` section of https://developer.android.com/build/releases/past-releases/agp-8-0-0-release-notes). That broke our aar initialization script, because the components didn't exist so the `aar` tasks never got [created here](https://github.com/flutter/flutter/blob/9ff9c67272f7f95c7d53ac3f89e0b659df9ddf3e/packages/flutter_tools/gradle/aar_init_script.gradle#L29). Verified that the one postsubmit that failed now passes (`android_obfuscate_test`) --- .ci.yaml | 28 ++++++++- TESTOWNERS | 2 + ...android_java11_integration_tool_tests.dart | 25 ++++++++ dev/bots/test.dart | 2 + .../lib/src/android/gradle_utils.dart | 56 ++++++++++++++--- ...roid_dependency_version_checking_test.dart | 0 .../commands.shard/permeable/create_test.dart | 6 +- .../android/gradle_errors_test.dart | 4 +- .../android/gradle_find_bundle_test.dart | 3 +- .../general.shard/android/gradle_test.dart | 12 ++-- .../android/gradle_utils_test.dart | 63 ++++++++++++++----- 11 files changed, 168 insertions(+), 33 deletions(-) create mode 100644 dev/bots/suite_runners/run_android_java11_integration_tool_tests.dart rename packages/flutter_tools/test/{android_preview_integration.shard => android_java11_integration.shard}/android_dependency_version_checking_test.dart (100%) diff --git a/.ci.yaml b/.ci.yaml index 0c2bc5a021..cb16703629 100644 --- a/.ci.yaml +++ b/.ci.yaml @@ -1155,7 +1155,7 @@ targets: {"dependency": "cmake", "version": "build_id:8787856497187628321"}, {"dependency": "goldctl", "version": "git_revision:720a542f6fe4f92922c3b8f0fdcc4d2ac6bb83cd"}, {"dependency": "ninja", "version": "version:1.9.0"}, - {"dependency": "open_jdk", "version": "version:11"} + {"dependency": "open_jdk", "version": "version:17"} ] shard: android_preview_tool_integration_tests tags: > @@ -1167,6 +1167,32 @@ targets: - bin/** - .ci.yaml + - name: Linux android_java11_tool_integration_tests + recipe: flutter/flutter_drone + bringup: true + timeout: 60 + properties: + add_recipes_cq: "true" + dependencies: >- + [ + {"dependency": "android_sdk", "version": "version:34v3"}, + {"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"}, + {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"}, + {"dependency": "cmake", "version": "build_id:8787856497187628321"}, + {"dependency": "goldctl", "version": "git_revision:720a542f6fe4f92922c3b8f0fdcc4d2ac6bb83cd"}, + {"dependency": "ninja", "version": "version:1.9.0"}, + {"dependency": "open_jdk", "version": "version:11"} + ] + shard: android_java11_tool_integration_tests + tags: > + ["framework", "hostonly", "shard", "linux"] + test_timeout_secs: "2700" + runIf: + - dev/** + - packages/flutter_tools/** + - bin/** + - .ci.yaml + - name: Linux tool_tests_commands recipe: flutter/flutter_drone timeout: 60 diff --git a/TESTOWNERS b/TESTOWNERS index e643479d70..2e2d90df45 100644 --- a/TESTOWNERS +++ b/TESTOWNERS @@ -333,6 +333,8 @@ # test_ownership @keyonghan # tool_host_cross_arch_tests @andrewkolos @flutter/tool # tool_integration_tests @christopherfujino @flutter/tool +# android_preview_tool_integration_tests @gmackall @flutter/android +# android_java11_tool_integration_tests @gmackall @flutter/android # tool_tests @andrewkolos @flutter/tool # verify_binaries_codesigned @cbracken @flutter/releases # web_canvaskit_tests @yjbanov @flutter/web diff --git a/dev/bots/suite_runners/run_android_java11_integration_tool_tests.dart b/dev/bots/suite_runners/run_android_java11_integration_tool_tests.dart new file mode 100644 index 0000000000..3ad18cad69 --- /dev/null +++ b/dev/bots/suite_runners/run_android_java11_integration_tool_tests.dart @@ -0,0 +1,25 @@ +// Copyright 2014 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:io'; + +import 'package:path/path.dart' as path; + +import '../utils.dart'; + +Future androidJava11IntegrationToolTestsRunner() async { + final String toolsPath = path.join(flutterRoot, 'packages', 'flutter_tools'); + + final List allTests = Directory(path.join(toolsPath, 'test', 'android_java11_integration.shard')) + .listSync(recursive: true).whereType() + .map((FileSystemEntity entry) => path.relative(entry.path, from: toolsPath)) + .where((String testPath) => path.basename(testPath).endsWith('_test.dart')).toList(); + + await runDartTest( + toolsPath, + forceSingleCore: true, + testPaths: selectIndexOfTotalSubshard(allTests), + collectMetrics: true, + ); +} diff --git a/dev/bots/test.dart b/dev/bots/test.dart index 0cfe0e962f..7f25aba313 100644 --- a/dev/bots/test.dart +++ b/dev/bots/test.dart @@ -59,6 +59,7 @@ import 'package:path/path.dart' as path; import 'run_command.dart'; import 'suite_runners/run_add_to_app_life_cycle_tests.dart'; import 'suite_runners/run_analyze_tests.dart'; +import 'suite_runners/run_android_java11_integration_tool_tests.dart'; import 'suite_runners/run_android_preview_integration_tool_tests.dart'; import 'suite_runners/run_customer_testing_tests.dart'; import 'suite_runners/run_docs_tests.dart'; @@ -131,6 +132,7 @@ Future main(List args) async { 'web_tool_tests': _runWebToolTests, 'tool_integration_tests': _runIntegrationToolTests, 'android_preview_tool_integration_tests': androidPreviewIntegrationToolTestsRunner, + 'android_java11_tool_integration_tests': androidJava11IntegrationToolTestsRunner, 'tool_host_cross_arch_tests': _runToolHostCrossArchTests, // All the unit/widget tests run using `flutter test --platform=chrome --web-renderer=html` 'web_tests': webTestsSuite.runWebHtmlUnitTests, diff --git a/packages/flutter_tools/lib/src/android/gradle_utils.dart b/packages/flutter_tools/lib/src/android/gradle_utils.dart index d1afaaa3b9..b3d3746f0c 100644 --- a/packages/flutter_tools/lib/src/android/gradle_utils.dart +++ b/packages/flutter_tools/lib/src/android/gradle_utils.dart @@ -26,10 +26,10 @@ import 'android_sdk.dart'; // However, this currently requires to migrate existing integration tests to the latest supported values. // // Please see the README before changing any of these values. -const String templateDefaultGradleVersion = '7.6.3'; -const String templateAndroidGradlePluginVersion = '7.3.0'; +const String templateDefaultGradleVersion = '8.3'; +const String templateAndroidGradlePluginVersion = '8.1.0'; const String templateAndroidGradlePluginVersionForModule = '7.3.0'; -const String templateKotlinGradlePluginVersion = '1.7.10'; +const String templateKotlinGradlePluginVersion = '1.8.22'; // The Flutter Gradle Plugin is only applied to app projects, and modules that // are built from source using (`include_flutter.groovy`). The remaining @@ -47,24 +47,24 @@ const String ndkVersion = '23.1.7779620'; // Update these when new major versions of Java are supported by new Gradle // versions that we support. // Source of truth: https://docs.gradle.org/current/userguide/compatibility.html -const String oneMajorVersionHigherJavaVersion = '20'; +const String oneMajorVersionHigherJavaVersion = '23'; // Update this when new versions of Gradle come out including minor versions // and should correspond to the maximum Gradle version we test in CI. // // Supported here means supported by the tooling for // flutter analyze --suggestions and does not imply broader flutter support. -const String maxKnownAndSupportedGradleVersion = '8.0.2'; +const String maxKnownAndSupportedGradleVersion = '8.7'; // Update this when new versions of AGP come out. // // Supported here means tooling is aware of this version's Java <-> AGP // compatibility. @visibleForTesting -const String maxKnownAndSupportedAgpVersion = '8.1'; +const String maxKnownAndSupportedAgpVersion = '8.4.0'; // Update this when new versions of AGP come out. -const String maxKnownAgpVersion = '8.3'; +const String maxKnownAgpVersion = '8.5'; // Oldest documented version of AGP that has a listed minimum // compatible Java version. @@ -439,6 +439,22 @@ bool validateGradleAndAgp(Logger logger, } // Begin Known Gradle <-> AGP validation. + if (isWithinVersionRange(agpV, min: '8.4.0', max: '8.4.99')) { + return isWithinVersionRange(gradleV, + min: '8.6', max: maxKnownAndSupportedGradleVersion); + } + if (isWithinVersionRange(agpV, min: '8.3.0', max: '8.3.99')) { + return isWithinVersionRange(gradleV, + min: '8.4', max: maxKnownAndSupportedGradleVersion); + } + if (isWithinVersionRange(agpV, min: '8.2.0', max: '8.2.99')) { + return isWithinVersionRange(gradleV, + min: '8.2', max: maxKnownAndSupportedGradleVersion); + } + if (isWithinVersionRange(agpV, min: '8.0.0', max: '8.1.99')) { + return isWithinVersionRange(gradleV, + min: '8.0', max: maxKnownAndSupportedGradleVersion); + } // Max agp here is a made up version to contain all 7.4 changes. if (isWithinVersionRange(agpV, min: '7.4', max: '7.5')) { return isWithinVersionRange(gradleV, @@ -692,7 +708,13 @@ String getGradleVersionFor(String androidPluginVersion) { GradleForAgp(agpMin: '4.0.0', agpMax: '4.1.0', minRequiredGradle: '6.7'), // 7.5 is a made up value to include everything through 7.4.* GradleForAgp(agpMin: '7.0.0', agpMax: '7.5', minRequiredGradle: '7.5'), - GradleForAgp(agpMin: '7.5.0', agpMax: '100.100', minRequiredGradle: '8.0'), + // Use 0 and 99 as a patch values to signify every AGP patch version with + // that major and minor version. + GradleForAgp(agpMin: '8.0.0', agpMax: '8.1.99', minRequiredGradle: '8.0'), + GradleForAgp(agpMin: '8.2.0', agpMax: '8.2.99', minRequiredGradle: '8.2'), + GradleForAgp(agpMin: '8.3.0', agpMax: '8.3.99', minRequiredGradle: '8.4'), + GradleForAgp(agpMin: '8.4.0', agpMax: '8.4.99', minRequiredGradle: '8.6'), + GradleForAgp(agpMin: '8.5.0', agpMax: '100.100', minRequiredGradle: '8.7'), // Assume if AGP is newer than this code know about return the highest gradle // version we know about. GradleForAgp(agpMin: maxKnownAgpVersion, agpMax: maxKnownAgpVersion, minRequiredGradle: maxKnownAndSupportedGradleVersion), @@ -882,6 +904,24 @@ String getGradlewFileName(Platform platform) { /// of Gradle, as https://docs.gradle.org/current/userguide/compatibility.html /// details. List _javaGradleCompatList = const [ + JavaGradleCompat( + javaMin: '22', + javaMax: '23', + gradleMin: '8.7', + gradleMax: maxKnownAndSupportedGradleVersion, + ), + JavaGradleCompat( + javaMin: '21', + javaMax: '22', + gradleMin: '8.4', + gradleMax: maxKnownAndSupportedGradleVersion, + ), + JavaGradleCompat( + javaMin: '20', + javaMax: '21', + gradleMin: '8.1', + gradleMax: maxKnownAndSupportedGradleVersion, + ), JavaGradleCompat( javaMin: '19', javaMax: '20', diff --git a/packages/flutter_tools/test/android_preview_integration.shard/android_dependency_version_checking_test.dart b/packages/flutter_tools/test/android_java11_integration.shard/android_dependency_version_checking_test.dart similarity index 100% rename from packages/flutter_tools/test/android_preview_integration.shard/android_dependency_version_checking_test.dart rename to packages/flutter_tools/test/android_java11_integration.shard/android_dependency_version_checking_test.dart diff --git a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart index 90043c0fdd..2de9662f4a 100644 --- a/packages/flutter_tools/test/commands.shard/permeable/create_test.dart +++ b/packages/flutter_tools/test/commands.shard/permeable/create_test.dart @@ -3759,7 +3759,7 @@ void main() { logger.clear(); } }, overrides: { - Java: () => FakeJava(version: const software.Version.withText(14, 0, 0, '14.0.0')), // Middle compatible Java version with current template AGP/Gradle versions. + Java: () => FakeJava(version: const software.Version.withText(20, 0, 0, '20.0.0')), // Middle compatible Java version with current template AGP/Gradle versions. Logger: () => logger, }); @@ -3786,7 +3786,7 @@ void main() { logger.clear(); } }, overrides: { - Java: () => FakeJava(version: const software.Version.withText(17, 0, 0, '18.0.0')), // Maximum compatible Java version with current template AGP/Gradle versions. + Java: () => FakeJava(version: const software.Version.withText(17, 0, 0, '22.0.0')), // Maximum compatible Java version with current template AGP/Gradle versions. Logger: () => logger, }); @@ -3813,7 +3813,7 @@ void main() { logger.clear(); } }, overrides: { - Java: () => FakeJava(version: const software.Version.withText(11, 0, 0, '11.0.0')), // Minimum compatible Java version with current template AGP/Gradle versions. + Java: () => FakeJava(version: const software.Version.withText(17, 0, 0, '17.0.0')), // Minimum compatible Java version with current template AGP/Gradle versions. Logger: () => logger, }); diff --git a/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart b/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart index a3775337bb..19dfad7cce 100644 --- a/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart +++ b/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart @@ -913,10 +913,10 @@ A problem occurred evaluating project ':app'. '│ To fix this issue, replace the following content: │\n' '│ /android/build.gradle: │\n' "│ - classpath 'com.android.tools.build:gradle:' │\n" - "│ + classpath 'com.android.tools.build:gradle:7.3.0' │\n" + "│ + classpath 'com.android.tools.build:gradle:$templateAndroidGradlePluginVersion' │\n" '│ /android/gradle/wrapper/gradle-wrapper.properties: │\n' '│ - https://services.gradle.org/distributions/gradle--all.zip │\n' - '│ + https://services.gradle.org/distributions/gradle-7.6.3-all.zip │\n' + '│ + https://services.gradle.org/distributions/gradle-$templateDefaultGradleVersion-all.zip │\n' '└──────────────────────────────────────────────────────────────────────────────────┘\n' ) ); diff --git a/packages/flutter_tools/test/general.shard/android/gradle_find_bundle_test.dart b/packages/flutter_tools/test/general.shard/android/gradle_find_bundle_test.dart index b2270ae554..b7de537e91 100644 --- a/packages/flutter_tools/test/general.shard/android/gradle_find_bundle_test.dart +++ b/packages/flutter_tools/test/general.shard/android/gradle_find_bundle_test.dart @@ -4,6 +4,7 @@ import 'package:file/memory.dart'; import 'package:flutter_tools/src/android/gradle.dart'; +import 'package:flutter_tools/src/android/gradle_utils.dart' as gradle_utils; import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/build_info.dart'; @@ -530,7 +531,7 @@ void main() { Event.flutterBuildInfo( label: 'gradle-expected-file-not-found', buildType: 'gradle', - settings: 'androidGradlePluginVersion: 7.6.3, fileExtension: .aab', + settings: 'androidGradlePluginVersion: ${gradle_utils.templateDefaultGradleVersion}, fileExtension: .aab', ), ), ); diff --git a/packages/flutter_tools/test/general.shard/android/gradle_test.dart b/packages/flutter_tools/test/general.shard/android/gradle_test.dart index 41bae583f1..39c91bb793 100644 --- a/packages/flutter_tools/test/general.shard/android/gradle_test.dart +++ b/packages/flutter_tools/test/general.shard/android/gradle_test.dart @@ -546,9 +546,9 @@ flutter: }); }); - group('gradgradle_utils.le version', () { + group('gradle version', () { testWithoutContext('should be compatible with the Android plugin version', () { - // Grangradle_utils.ular versions. + // Granular versions. expect(gradle_utils.getGradleVersionFor('1.0.0'), '2.3'); expect(gradle_utils.getGradleVersionFor('1.0.1'), '2.3'); expect(gradle_utils.getGradleVersionFor('1.0.2'), '2.3'); @@ -558,7 +558,7 @@ flutter: expect(gradle_utils.getGradleVersionFor('1.1.2'), '2.3'); expect(gradle_utils.getGradleVersionFor('1.1.2'), '2.3'); expect(gradle_utils.getGradleVersionFor('1.1.3'), '2.3'); - // Versgradle_utils.ion Ranges. + // Version Ranges. expect(gradle_utils.getGradleVersionFor('1.2.0'), '2.9'); expect(gradle_utils.getGradleVersionFor('1.3.1'), '2.9'); @@ -592,7 +592,11 @@ flutter: expect(gradle_utils.getGradleVersionFor('7.1.2'), '7.5'); expect(gradle_utils.getGradleVersionFor('7.2'), '7.5'); expect(gradle_utils.getGradleVersionFor('8.0'), '8.0'); - expect(gradle_utils.getGradleVersionFor(gradle_utils.maxKnownAgpVersion), '8.0'); + expect(gradle_utils.getGradleVersionFor('8.1'), '8.0'); + expect(gradle_utils.getGradleVersionFor('8.2'), '8.2'); + expect(gradle_utils.getGradleVersionFor('8.3'), '8.4'); + expect(gradle_utils.getGradleVersionFor('8.4'), '8.6'); + expect(gradle_utils.getGradleVersionFor(gradle_utils.maxKnownAgpVersion), '8.7'); }); testWithoutContext('throws on unsupported versions', () { diff --git a/packages/flutter_tools/test/general.shard/android/gradle_utils_test.dart b/packages/flutter_tools/test/general.shard/android/gradle_utils_test.dart index 0e3522edb2..05d9d1c138 100644 --- a/packages/flutter_tools/test/general.shard/android/gradle_utils_test.dart +++ b/packages/flutter_tools/test/general.shard/android/gradle_utils_test.dart @@ -82,7 +82,7 @@ void main() { 'distributionPath=wrapper/dists\n' 'zipStoreBase=GRADLE_USER_HOME\n' 'zipStorePath=wrapper/dists\n' - 'distributionUrl=https\\://services.gradle.org/distributions/gradle-7.6.3-all.zip\n'); + 'distributionUrl=https\\://services.gradle.org/distributions/gradle-$templateDefaultGradleVersion-all.zip\n'); }); testWithoutContext('injects the wrapper when some files are missing', () { @@ -127,7 +127,7 @@ void main() { 'distributionPath=wrapper/dists\n' 'zipStoreBase=GRADLE_USER_HOME\n' 'zipStorePath=wrapper/dists\n' - 'distributionUrl=https\\://services.gradle.org/distributions/gradle-7.6.3-all.zip\n'); + 'distributionUrl=https\\://services.gradle.org/distributions/gradle-$templateDefaultGradleVersion-all.zip\n'); }); testWithoutContext( @@ -967,19 +967,22 @@ allprojects { JavaAgpTestData(true, javaVersion: '18', agpVersion: '4.2'), // Strictly too new AGP versions. // *The tests that follow need to be updated* when max supported AGP versions are updated: - JavaAgpTestData(false, javaVersion: '24', agpVersion: '8.3'), - JavaAgpTestData(false, javaVersion: '20', agpVersion: '8.3'), - JavaAgpTestData(false, javaVersion: '17', agpVersion: '8.3'), + JavaAgpTestData(false, javaVersion: '24', agpVersion: '8.5'), + JavaAgpTestData(false, javaVersion: '20', agpVersion: '8.5'), + JavaAgpTestData(false, javaVersion: '17', agpVersion: '8.5'), // Java 17 & patch versions compatibility cases // *The tests that follow need to be updated* when maxKnownAndSupportedAgpVersion is // updated: - JavaAgpTestData(false, javaVersion: '17', agpVersion: '8.2'), + JavaAgpTestData(false, javaVersion: '17', agpVersion: '8.5'), JavaAgpTestData(true, javaVersion: '17', agpVersion: maxKnownAndSupportedAgpVersion), + JavaAgpTestData(true, javaVersion: '17', agpVersion: '8.3'), JavaAgpTestData(true, javaVersion: '17', agpVersion: '8.1'), JavaAgpTestData(true, javaVersion: '17', agpVersion: '8.0'), JavaAgpTestData(true, javaVersion: '17', agpVersion: '7.4'), - JavaAgpTestData(false, javaVersion: '17.0.3', agpVersion: '8.2'), + JavaAgpTestData(false, javaVersion: '17.0.3', agpVersion: '8.5'), JavaAgpTestData(true, javaVersion: '17.0.3', agpVersion: maxKnownAndSupportedAgpVersion), + JavaAgpTestData(true, javaVersion: '17.0.3', agpVersion: '8.3'), + JavaAgpTestData(true, javaVersion: '17.0.3', agpVersion: '8.2'), JavaAgpTestData(true, javaVersion: '17.0.3', agpVersion: '8.1'), JavaAgpTestData(true, javaVersion: '17.0.3', agpVersion: '8.0'), JavaAgpTestData(true, javaVersion: '17.0.3', agpVersion: '7.4'), @@ -1030,11 +1033,41 @@ allprojects { // Maximum known Java version. // *The test case that follows needs to be updated* when higher versions of Java are supported: expect( - getValidGradleVersionRangeForJavaVersion(testLogger, javaV: '20'), + getValidGradleVersionRangeForJavaVersion(testLogger, javaV: '23'), allOf( - equals(getValidGradleVersionRangeForJavaVersion(testLogger, javaV: '20.0.2')), + equals(getValidGradleVersionRangeForJavaVersion(testLogger, javaV: '23.0.2')), isNull)); // Known supported Java versions. + expect( + getValidGradleVersionRangeForJavaVersion(testLogger, javaV: '22'), + allOf( + equals(getValidGradleVersionRangeForJavaVersion(testLogger, javaV: '22.0.2')), + equals( + const JavaGradleCompat( + javaMin: '22', + javaMax: '23', + gradleMin: '8.7', + gradleMax: maxKnownAndSupportedGradleVersion)))); + expect( + getValidGradleVersionRangeForJavaVersion(testLogger, javaV: '21'), + allOf( + equals(getValidGradleVersionRangeForJavaVersion(testLogger, javaV: '21.0.2')), + equals( + const JavaGradleCompat( + javaMin: '21', + javaMax: '22', + gradleMin: '8.4', + gradleMax: maxKnownAndSupportedGradleVersion)))); + expect( + getValidGradleVersionRangeForJavaVersion(testLogger, javaV: '20'), + allOf( + equals(getValidGradleVersionRangeForJavaVersion(testLogger, javaV: '20.0.2')), + equals( + const JavaGradleCompat( + javaMin: '20', + javaMax: '21', + gradleMin: '8.1', + gradleMax: maxKnownAndSupportedGradleVersion)))); expect( getValidGradleVersionRangeForJavaVersion(testLogger, javaV: '19'), allOf( @@ -1175,7 +1208,7 @@ allprojects { javaMin: '17', javaDefault: '17', agpMin: '8.0', - agpMax: '8.1'))); + agpMax: maxKnownAndSupportedAgpVersion))); // Known Java versions. expect( getMinimumAgpVersionForJavaVersion(testLogger, javaV: '17'), @@ -1186,7 +1219,7 @@ allprojects { javaMin: '17', javaDefault: '17', agpMin: '8.0', - agpMax: '8.1')))); + agpMax: maxKnownAndSupportedAgpVersion)))); expect( getMinimumAgpVersionForJavaVersion(testLogger, javaV: '15'), allOf( @@ -1242,13 +1275,13 @@ allprojects { expect(getJavaVersionFor(gradleV: '1.9', agpV: '4.2'), equals(const VersionRange('1.8', null))); expect(getJavaVersionFor(gradleV: '2.0', agpV: '4.1'), equals(const VersionRange(null, '1.9'))); // Strictly too new Gradle and AGP versions. - expect(getJavaVersionFor(gradleV: '8.1', agpV: '8.2'), equals(const VersionRange(null, null))); + expect(getJavaVersionFor(gradleV: '8.8', agpV: '8.6'), equals(const VersionRange(null, null))); // Strictly too new Gradle version and maximum version of AGP. //*This test case will need its expected Java range updated when a new version of AGP is supported.* - expect(getJavaVersionFor(gradleV: '8.1', agpV: maxKnownAndSupportedAgpVersion), equals(const VersionRange('17', null))); + expect(getJavaVersionFor(gradleV: '8.8', agpV: maxKnownAndSupportedAgpVersion), equals(const VersionRange('17', null))); // Strictly too new AGP version and maximum version of Gradle. //*This test case will need its expected Java range updated when a new version of Gradle is supported.* - expect(getJavaVersionFor(gradleV: maxKnownAndSupportedGradleVersion, agpV: '8.2'), equals(const VersionRange(null, '20'))); + expect(getJavaVersionFor(gradleV: maxKnownAndSupportedGradleVersion, agpV: '8.6'), equals(const VersionRange(null, '23'))); // Tests with a known compatible Gradle/AGP version pair. expect(getJavaVersionFor(gradleV: '7.0', agpV: '7.2'), equals(const VersionRange('11', '17'))); expect(getJavaVersionFor(gradleV: '7.1', agpV: '7.2'), equals(const VersionRange('11', '17'))); @@ -1256,6 +1289,8 @@ allprojects { expect(getJavaVersionFor(gradleV: '7.1', agpV: '7.0'), equals(const VersionRange('11', '17'))); expect(getJavaVersionFor(gradleV: '7.1', agpV: '7.2'), equals(const VersionRange('11', '17'))); expect(getJavaVersionFor(gradleV: '7.1', agpV: '7.4'), equals(const VersionRange('11', '17'))); + expect(getJavaVersionFor(gradleV: '8.4', agpV: '8.1'), equals(const VersionRange('17', '22'))); + expect(getJavaVersionFor(gradleV: '8.7', agpV: '8.1'), equals(const VersionRange('17', '23'))); }); }); }