diff --git a/.ci.yaml b/.ci.yaml index 96f86f5c159..367b047cd9d 100644 --- a/.ci.yaml +++ b/.ci.yaml @@ -1528,7 +1528,8 @@ targets: - engine/** - DEPS - - name: Linux android_java11_tool_integration_tests + - name: Linux android_java17_tool_integration_tests + bringup: true recipe: flutter/flutter_drone timeout: 60 properties: @@ -1541,9 +1542,9 @@ targets: {"dependency": "cmake", "version": "build_id:8787856497187628321"}, {"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}, {"dependency": "ninja", "version": "version:1.9.0"}, - {"dependency": "open_jdk", "version": "version:11"} + {"dependency": "open_jdk", "version": "version:17"} ] - shard: android_java11_tool_integration_tests + shard: android_java17_tool_integration_tests tags: > ["framework", "hostonly", "shard", "linux"] test_timeout_secs: "2700" diff --git a/packages/flutter_tools/gradle/src/main/kotlin/FlutterPlugin.kt b/packages/flutter_tools/gradle/src/main/kotlin/FlutterPlugin.kt index de39a521c7a..23a931a0875 100644 --- a/packages/flutter_tools/gradle/src/main/kotlin/FlutterPlugin.kt +++ b/packages/flutter_tools/gradle/src/main/kotlin/FlutterPlugin.kt @@ -213,8 +213,7 @@ class FlutterPlugin : Plugin { val shouldSkipDependencyChecks: Boolean = project.hasProperty("skipDependencyChecks") && ( - project.properties["skipDependencyChecks"] as? Boolean - ?: false + project.properties["skipDependencyChecks"].toString().toBoolean() ) if (!shouldSkipDependencyChecks) { try { diff --git a/packages/flutter_tools/test/android_java17_integration.shard/android_dependency_version_checking_test.dart b/packages/flutter_tools/test/android_java17_integration.shard/android_dependency_version_checking_test.dart new file mode 100644 index 00000000000..5ad8c3b2fd2 --- /dev/null +++ b/packages/flutter_tools/test/android_java17_integration.shard/android_dependency_version_checking_test.dart @@ -0,0 +1,86 @@ +// 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:file/src/interface/file_system_entity.dart'; + +import '../integration.shard/test_utils.dart'; +import '../src/android_common.dart'; +import '../src/common.dart'; +import '../src/context.dart'; + +void main() { + late Directory tempDir; + + setUpAll(() async { + tempDir = createResolvedTempDirectorySync('run_test.'); + }); + + tearDownAll(() async { + tryToDelete(tempDir as FileSystemEntity); + }); + + testUsingContext('AGP version out of "warn" support band but in "error" band builds ' + 'successfully and prints warning', () async { + final versionTuple = VersionTuple( + agpVersion: '8.3.0', + gradleVersion: '8.12', + kotlinVersion: '2.1.0', + ); + final ProcessResult result = await buildFlutterApkWithSpecifiedDependencyVersions( + versions: versionTuple, + tempDir: tempDir, + ); + expect(result, const ProcessResultMatcher()); + expect(result.stderr, contains('Please upgrade your Android Gradle Plugin version')); + }); + + testUsingContext('Gradle version out of "warn" support band but in "error" band builds ' + 'successfully and prints warning', () async { + // Create a new flutter project. + final versionTuple = VersionTuple( + agpVersion: '8.3.0', + gradleVersion: '8.4', + kotlinVersion: '2.1.0', + ); + final ProcessResult result = await buildFlutterApkWithSpecifiedDependencyVersions( + versions: versionTuple, + tempDir: tempDir, + ); + expect(result, const ProcessResultMatcher()); + expect(result.stderr, contains('Please upgrade your Gradle version')); + }); + + testUsingContext('Kotlin version out of "warn" support band but in "error" band builds ' + 'successfully and prints warning', () async { + final versionTuple = VersionTuple( + agpVersion: '8.9.1', + gradleVersion: '8.12', + kotlinVersion: '1.9.25', + ); + final ProcessResult result = await buildFlutterApkWithSpecifiedDependencyVersions( + versions: versionTuple, + tempDir: tempDir, + ); + + expect(result, const ProcessResultMatcher()); + expect(result.stderr, contains('Please upgrade your Kotlin version')); + }); + + testUsingContext('No logs are printed when suppression flag is passed', () async { + final versionTuple = VersionTuple( + agpVersion: '8.3.0', + gradleVersion: '8.12', + kotlinVersion: '2.1.0', + ); + final ProcessResult result = await buildFlutterApkWithSpecifiedDependencyVersions( + versions: versionTuple, + tempDir: tempDir, + skipChecking: true, + ); + expect(result, const ProcessResultMatcher()); + expect(result.stderr, isNot(contains('Please upgrade your Android Gradle Plugin version'))); + }); +} diff --git a/packages/flutter_tools/test/src/android_common.dart b/packages/flutter_tools/test/src/android_common.dart index 937934de2ed..dc0d4835f2f 100644 --- a/packages/flutter_tools/test/src/android_common.dart +++ b/packages/flutter_tools/test/src/android_common.dart @@ -144,6 +144,7 @@ class VersionTuple { Future buildFlutterApkWithSpecifiedDependencyVersions({ required VersionTuple versions, required Directory tempDir, + bool skipChecking = false, }) async { // Create a new flutter project. final String flutterBin = fileSystem.path.join(getFlutterRoot(), 'bin', 'flutter'); @@ -190,6 +191,7 @@ Future buildFlutterApkWithSpecifiedDependencyVersions({ 'build', 'apk', '--debug', + if (skipChecking) '--android-skip-build-dependency-validation', ], workingDirectory: app.path); return result; }