flutter/dev/devicelab/bin/tasks/android_java11_dependency_smoke_tests.dart
flutteractionsbot 44b32ecbb7
[CP-stable][reland] Fix regression in NDK version checking (#169289)
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.

### Issue Link:
What is the link to the issue this cherry-pick is addressing?

There was no associated issue, but the problem is that https://github.com/flutter/flutter/pull/166727 broke Flutter Android builds on apps that use plugins with AGP versions less than 8.2.

### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples

Fixes Flutter Android builds for apps which use plugins with old Android Gradle Plugin versions.

### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)

The impact is a crash in the build process.

### Workaround:
Is there a workaround for this issue?

No

### Risk:
What is the risk level of this cherry-pick?

### Test Coverage:
Are you confident that your fix is well-tested by automated tests?

### Validation Steps:
What are the steps to validate that this fix works?

Build an app that uses AGP < 8.2.
2025-05-23 16:56:15 +00:00

74 lines
2.5 KiB
Dart

// 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/local.dart';
import 'package:flutter_devicelab/framework/dependency_smoke_test_task_definition.dart';
import 'package:flutter_devicelab/framework/framework.dart';
// Methodology:
// - AGP: all versions within our support range (*).
// - Gradle: The version that AGP lists as the default Gradle version for that
// AGP version under the release notes, e.g.
// https://developer.android.com/build/releases/past-releases/agp-8-4-0-release-notes.
// - Kotlin: No methodology as of yet.
// (*) - support range defined in packages/flutter_tools/gradle/src/main/kotlin/dependency_version_checker.gradle.kts.
List<VersionTuple> versionTuples = <VersionTuple>[
VersionTuple(
agpVersion: '7.0.1',
gradleVersion: '7.0.2',
kotlinVersion: '1.7.10',
compileSdkVersion: '34',
),
VersionTuple(
agpVersion: '7.1.0',
gradleVersion: '7.2',
kotlinVersion: '1.7.10',
compileSdkVersion: '34',
),
VersionTuple(
agpVersion: '7.2.0',
gradleVersion: '7.3.3',
kotlinVersion: '1.7.10',
compileSdkVersion: '34',
),
VersionTuple(
agpVersion: '7.3.0',
gradleVersion: '7.4',
kotlinVersion: '1.7.10',
compileSdkVersion: '34',
),
// minSdk bump required due to a bug in the default version of r8 used by AGP
// 7.4.0. See http://issuetracker.google.com/issues/357553178.
VersionTuple(
agpVersion: '7.4.0',
gradleVersion: '7.5',
kotlinVersion: '1.8.10',
compileSdkVersion: '34',
minSdkVersion: '24',
),
];
// This test requires a Java version less than 17 due to the intentionally low
// version of Gradle. We choose 11 because this was the primary version used in
// CI before 17, and hence it is also hosted on CIPD. It also overrides to
// compileSdkVersion 34 because compileSdk 35 requires AGP 8.0+.
// https://docs.gradle.org/current/userguide/compatibility.html
Future<void> main() async {
/// The [FileSystem] for the integration test environment.
const LocalFileSystem fileSystem = LocalFileSystem();
final Directory tempDir = fileSystem.systemTempDirectory.createTempSync(
'flutter_android_dependency_version_tests',
);
await task(() {
return buildFlutterApkWithSpecifiedDependencyVersions(
versionTuples: versionTuples,
tempDir: tempDir,
localFileSystem: fileSystem,
);
});
}