From 6190c5df09ee3aa42e87c1c4eae4373ea4f13e59 Mon Sep 17 00:00:00 2001 From: Zachary Anderson Date: Wed, 13 Apr 2022 08:12:07 -0700 Subject: [PATCH] Revert "Use the maven-publish plugin to publish AAR files. (#101276)" (#101827) This reverts commit 2b0255f0d9f38f5671eaffe2438240ed048670cc. --- .ci.yaml | 86 ++++----- AUTHORS | 1 - .../bin/tasks/android_obfuscate_test.dart | 32 +--- .../bin/tasks/build_aar_module_test.dart | 173 +----------------- .../gradle/aar_init_script.gradle | 98 +++++----- .../flutter_tools/lib/src/android/gradle.dart | 2 +- .../lib/src/android/gradle_utils.dart | 3 +- .../general.shard/android/gradle_test.dart | 12 +- 8 files changed, 115 insertions(+), 292 deletions(-) diff --git a/.ci.yaml b/.ci.yaml index 2cdbefa7faa..e94fccce2af 100755 --- a/.ci.yaml +++ b/.ci.yaml @@ -19,7 +19,7 @@ platform_properties: {"name":"android_sdk","path":"android"}, {"name":"chrome_and_driver_96","path":"chrome"}, {"name":"flutter_sdk","path":"flutter sdk"}, - {"name":"openjdk_11","path":"java"}, + {"name":"openjdk","path":"java"}, {"name":"pub_cache","path":".pub-cache"} ] dependencies: >- @@ -37,7 +37,7 @@ platform_properties: {"name":"chrome_and_driver_96","path":"chrome"}, {"name":"flutter_sdk","path":"flutter sdk"}, {"name":"gradle","path":"gradle"}, - {"name":"openjdk_11","path":"java"}, + {"name":"openjdk","path":"java11"}, {"name":"pub_cache","path":".pub-cache"} ] dependencies: >- @@ -57,7 +57,7 @@ platform_properties: {"name":"chrome_and_driver_96","path":"chrome"}, {"name":"flutter_sdk","path":"flutter sdk"}, {"name":"gradle","path":"gradle"}, - {"name":"openjdk_11","path":"java"}, + {"name":"openjdk","path":"java11"}, {"name":"pub_cache","path":".pub-cache"} ] dependencies: >- @@ -76,7 +76,7 @@ platform_properties: {"name":"android_sdk","path":"android"}, {"name":"chrome_and_driver_96","path":"chrome"}, {"name":"flutter_sdk","path":"flutter sdk"}, - {"name":"openjdk_11","path":"java"}, + {"name":"openjdk","path":"java11"}, {"name":"osx_sdk_13a233","path":"osx_sdk"}, {"name":"pub_cache","path":".pub-cache"}, {"name":"xcode_binary","path":"xcode_binary"} @@ -96,7 +96,7 @@ platform_properties: {"name":"chrome_and_driver_96","path":"chrome"}, {"name":"flutter_sdk","path":"flutter sdk"}, {"name":"gradle","path":"gradle"}, - {"name":"openjdk_11","path":"java"}, + {"name":"openjdk","path":"java11"}, {"name":"pub_cache","path":".pub-cache"} ] dependencies: >- @@ -115,7 +115,7 @@ platform_properties: {"name":"chrome_and_driver_96","path":"chrome"}, {"name":"flutter_sdk","path":"flutter sdk"}, {"name":"gradle","path":"gradle"}, - {"name":"openjdk_11","path":"java"}, + {"name":"openjdk","path":"java11"}, {"name":"pub_cache","path":".pub-cache"}, {"name":"xcode_binary","path":"xcode_binary"}, {"name":"osx_sdk_13a233","path":"osx_sdk"} @@ -137,7 +137,7 @@ platform_properties: {"name":"android_sdk","path":"android"}, {"name":"chrome_and_driver_96","path":"chrome"}, {"name":"flutter_sdk","path":"flutter sdk"}, - {"name":"openjdk_11","path":"java"}, + {"name":"openjdk","path":"java11"}, {"name":"pub_cache","path":".pub-cache"}, {"name":"vsbuild","path":"vsbuild"} ] @@ -156,7 +156,7 @@ platform_properties: {"name":"chrome_and_driver_96","path":"chrome"}, {"name":"flutter_sdk","path":"flutter sdk"}, {"name":"gradle","path":"gradle"}, - {"name":"openjdk_11","path":"java"}, + {"name":"openjdk","path":"java11"}, {"name":"pub_cache","path":".pub-cache"} ] dependencies: >- @@ -188,13 +188,13 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java"} ] dependencies: >- [ {"dependency": "android_sdk", "version": "version:31v8"}, {"dependency": "chrome_and_driver", "version": "version:96.2"}, - {"dependency": "open_jdk", "version": "11"} + {"dependency": "open_jdk"} ] tags: > ["devicelab","hostonly"] @@ -460,7 +460,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] dependencies: >- [ @@ -484,7 +484,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] dependencies: >- [ @@ -508,7 +508,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] dependencies: >- [ @@ -532,7 +532,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] dependencies: >- [ @@ -556,7 +556,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] dependencies: >- [ @@ -580,7 +580,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] dependencies: >- [ @@ -628,7 +628,7 @@ targets: caches: >- [ {"name":"gradle", "path":"gradle"}, - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] dependencies: >- [ @@ -653,7 +653,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] dependencies: >- [ @@ -678,7 +678,7 @@ targets: caches: >- [ {"name":"gradle", "path":"gradle"}, - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] dependencies: >- [ @@ -1549,7 +1549,7 @@ targets: ] caches: >- [ - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] scheduler: luci @@ -1567,7 +1567,7 @@ targets: ] caches: >- [ - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] scheduler: luci @@ -1585,7 +1585,7 @@ targets: ] caches: >- [ - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] scheduler: luci @@ -1603,7 +1603,7 @@ targets: ] caches: >- [ - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] scheduler: luci @@ -1621,7 +1621,7 @@ targets: ] caches: >- [ - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] scheduler: luci @@ -1639,7 +1639,7 @@ targets: ] caches: >- [ - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] scheduler: luci @@ -1657,7 +1657,7 @@ targets: ] caches: >- [ - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] scheduler: luci @@ -1675,7 +1675,7 @@ targets: ] caches: >- [ - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] scheduler: luci @@ -2274,7 +2274,7 @@ targets: ] caches: >- [ - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] scheduler: luci @@ -2434,12 +2434,12 @@ targets: caches: >- [ {"name":"gradle", "path":"gradle"}, - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java"} ] dependencies: >- [ {"dependency": "android_sdk", "version": "version:31v8"}, - {"dependency": "open_jdk", "version": "11"} + {"dependency": "open_jdk"} ] tags: > ["devicelab","hostonly"] @@ -2723,7 +2723,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] dependencies: >- [ @@ -2770,7 +2770,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] dependencies: >- [ @@ -2794,7 +2794,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] dependencies: >- [ @@ -2820,7 +2820,7 @@ targets: caches: >- [ {"name":"gradle", "path":"gradle"}, - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] dependencies: >- [ @@ -3234,7 +3234,7 @@ targets: ] caches: >- [ - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] scheduler: luci @@ -3252,7 +3252,7 @@ targets: ] caches: >- [ - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] scheduler: luci @@ -3270,7 +3270,7 @@ targets: ] caches: >- [ - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] scheduler: luci @@ -3687,13 +3687,13 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java"} ] dependencies: >- [ {"dependency": "android_sdk", "version": "version:31v8"}, {"dependency": "chrome_and_driver", "version": "version:96.2"}, - {"dependency": "open_jdk", "version": "11"} + {"dependency": "open_jdk"} ] tags: > ["devicelab","hostonly"] @@ -3928,7 +3928,7 @@ targets: ] caches: >- [ - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] tags: > ["devicelab","hostonly"] @@ -3971,7 +3971,7 @@ targets: caches: >- [ {"name":"gradle", "path":"gradle"}, - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] dependencies: >- [ @@ -3996,7 +3996,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] dependencies: >- [ @@ -4299,7 +4299,7 @@ targets: ] caches: >- [ - {"name": "openjdk_11", "path": "java"} + {"name": "openjdk", "path": "java11"} ] scheduler: luci diff --git a/AUTHORS b/AUTHORS index a3fcb825ea6..4ec4dabc1e3 100644 --- a/AUTHORS +++ b/AUTHORS @@ -93,4 +93,3 @@ Alberto Miola Twin Sun, LLC Taskulu LDA Jonathan Joelson -Elsabe Ros diff --git a/dev/devicelab/bin/tasks/android_obfuscate_test.dart b/dev/devicelab/bin/tasks/android_obfuscate_test.dart index 15c372ce02e..6676a0d61fc 100644 --- a/dev/devicelab/bin/tasks/android_obfuscate_test.dart +++ b/dev/devicelab/bin/tasks/android_obfuscate_test.dart @@ -67,45 +67,21 @@ Future main() async { ]); }); - final String outputAarDirectoryOld = path.join( + final String outputAarDirectory = path.join( flutterProject.rootPath, 'build/host/outputs/repo/com/example/${flutterProject.name}/flutter_release/1.0/flutter_release-1.0.aar', ); - final Iterable oldAarFiles = await getFilesInAar(outputAarDirectoryOld); + final Iterable aarFiles = await getFilesInAar(outputAarDirectory); checkCollectionContains([ ...flutterAssets, 'jni/armeabi-v7a/libapp.so', - ], oldAarFiles); - - final String outputAarDirectoryNew = path.join( - flutterProject.rootPath, - 'build/host/outputs/repo/com/example/${flutterProject.name}/flutter/1.0/flutter-1.0-release.aar', - ); - final Iterable newAarFiles = await getFilesInAar(outputAarDirectoryNew); - - checkCollectionContains([ - ...flutterAssets, - 'jni/armeabi-v7a/libapp.so', - ], newAarFiles); + ], aarFiles); // Verify that an identifier from the Dart project code is not present // in the compiled binary. await inDirectory(flutterProject.rootPath, () async { - await exec('unzip', [outputAarDirectoryOld]); - checkFileExists(path.join(flutterProject.rootPath, 'jni/armeabi-v7a/libapp.so')); - final String response = await eval( - 'grep', - [flutterProject.name, 'jni/armeabi-v7a/libapp.so'], - canFail: true, - ); - if (response.trim().contains('matches')) { - foundAarProjectName = true; - } - }); - - await inDirectory(flutterProject.rootPath, () async { - await exec('unzip', [outputAarDirectoryNew]); + await exec('unzip', [outputAarDirectory]); checkFileExists(path.join(flutterProject.rootPath, 'jni/armeabi-v7a/libapp.so')); final String response = await eval( 'grep', diff --git a/dev/devicelab/bin/tasks/build_aar_module_test.dart b/dev/devicelab/bin/tasks/build_aar_module_test.dart index ad8b9bb6308..0d47b4b05e2 100644 --- a/dev/devicelab/bin/tasks/build_aar_module_test.dart +++ b/dev/devicelab/bin/tasks/build_aar_module_test.dart @@ -98,7 +98,7 @@ Future main() async { 'repo', ); - section('Check release Maven artifacts (old format)'); + section('Check release Maven artifacts'); checkFileExists(path.join( repoPath, @@ -111,7 +111,7 @@ Future main() async { 'flutter_release-1.0.aar', )); - final String releasePomOld = path.join( + final String releasePom = path.join( repoPath, 'io', 'flutter', @@ -122,7 +122,7 @@ Future main() async { 'flutter_release-1.0.pom', ); - checkFileExists(releasePomOld); + checkFileExists(releasePom); checkFileExists(path.join( repoPath, @@ -146,54 +146,6 @@ Future main() async { 'plugin_with_android_release-1.0.pom', )); - section('Check release Maven artifacts (new format)'); - - checkFileExists(path.join( - repoPath, - 'io', - 'flutter', - 'devicelab', - 'hello', - 'flutter', - '1.0', - 'flutter-1.0-release.aar', - )); - - final String releasePomNew = path.join( - repoPath, - 'io', - 'flutter', - 'devicelab', - 'hello', - 'flutter', - '1.0', - 'flutter-1.0.pom', - ); - - checkFileExists(releasePomNew); - - checkFileExists(path.join( - repoPath, - 'io', - 'flutter', - 'devicelab', - 'plugin_with_android', - 'plugin_with_android', - '1.0', - 'plugin_with_android-1.0-release.aar', - )); - - checkFileExists(path.join( - repoPath, - 'io', - 'flutter', - 'devicelab', - 'plugin_with_android', - 'plugin_with_android', - '1.0', - 'plugin_with_android-1.0.pom', - )); - section('Check AOT blobs in release POM'); checkFileContains([ @@ -201,17 +153,8 @@ Future main() async { 'armeabi_v7a_release', 'arm64_v8a_release', 'x86_64_release', - 'plugin_with_android', - '', //make sure the old pom contains the tag - ], releasePomOld); - - checkFileContains([ - 'flutter_embedding_release', - 'armeabi_v7a_release', - 'arm64_v8a_release', - 'x86_64_release', - 'plugin_with_android', - ], releasePomNew); + 'plugin_with_android_release', + ], releasePom); section('Check assets in release AAR'); @@ -237,29 +180,7 @@ Future main() async { ) ); - checkCollectionContains( - [ - ...flutterAssets, - // AOT snapshots - 'jni/arm64-v8a/libapp.so', - 'jni/armeabi-v7a/libapp.so', - 'jni/x86_64/libapp.so', - ], - await getFilesInAar( - path.join( - repoPath, - 'io', - 'flutter', - 'devicelab', - 'hello', - 'flutter', - '1.0', - 'flutter-1.0-release.aar', - ) - ) - ); - - section('Check debug Maven artifacts (old format)'); + section('Check debug Maven artifacts'); checkFileExists(path.join( repoPath, @@ -272,7 +193,7 @@ Future main() async { 'flutter_debug-1.0.aar', )); - final String debugPomOld = path.join( + final String debugPom = path.join( repoPath, 'io', 'flutter', @@ -283,7 +204,7 @@ Future main() async { 'flutter_debug-1.0.pom', ); - checkFileExists(debugPomOld); + checkFileExists(debugPom); checkFileExists(path.join( repoPath, @@ -307,54 +228,6 @@ Future main() async { 'plugin_with_android_debug-1.0.pom', )); - section('Check debug Maven artifacts (new format)'); - - checkFileExists(path.join( - repoPath, - 'io', - 'flutter', - 'devicelab', - 'hello', - 'flutter', - '1.0', - 'flutter-1.0-debug.aar', - )); - - final String debugPomNew = path.join( - repoPath, - 'io', - 'flutter', - 'devicelab', - 'hello', - 'flutter', - '1.0', - 'flutter-1.0.pom', - ); - - checkFileExists(debugPomNew); - - checkFileExists(path.join( - repoPath, - 'io', - 'flutter', - 'devicelab', - 'plugin_with_android', - 'plugin_with_android', - '1.0', - 'plugin_with_android-1.0-debug.aar', - )); - - checkFileExists(path.join( - repoPath, - 'io', - 'flutter', - 'devicelab', - 'plugin_with_android', - 'plugin_with_android', - '1.0', - 'plugin_with_android-1.0.pom', - )); - section('Check AOT blobs in debug POM'); checkFileContains([ @@ -363,18 +236,8 @@ Future main() async { 'x86_64_debug', 'armeabi_v7a_debug', 'arm64_v8a_debug', - 'plugin_with_android', - '', //make sure the old pom contains the tag - ], debugPomOld); - - checkFileContains([ - 'flutter_embedding_debug', - 'x86_debug', - 'x86_64_debug', - 'armeabi_v7a_debug', - 'arm64_v8a_debug', - 'plugin_with_android', - ], debugPomNew); + 'plugin_with_android_debug', + ], debugPom); section('Check assets in debug AAR'); @@ -389,27 +252,11 @@ Future main() async { 'flutter_debug-1.0.aar', )); - final Iterable debugAarNew = await getFilesInAar(path.join( - repoPath, - 'io', - 'flutter', - 'devicelab', - 'hello', - 'flutter', - '1.0', - 'flutter-1.0-debug.aar', - )); - checkCollectionContains([ ...flutterAssets, ...debugAssets, ], debugAar); - checkCollectionContains([ - ...flutterAssets, - ...debugAssets, - ], debugAarNew); - return TaskResult.success(null); } on TaskResult catch (taskResult) { return taskResult; diff --git a/packages/flutter_tools/gradle/aar_init_script.gradle b/packages/flutter_tools/gradle/aar_init_script.gradle index c4bf0655d34..e133e45c431 100644 --- a/packages/flutter_tools/gradle/aar_init_script.gradle +++ b/packages/flutter_tools/gradle/aar_init_script.gradle @@ -6,7 +6,9 @@ import java.nio.file.Paths import org.gradle.api.Project import org.gradle.api.artifacts.Configuration -import org.gradle.api.publish.maven.MavenPublication +import org.gradle.api.artifacts.maven.MavenDeployer +import org.gradle.api.plugins.MavenPlugin +import org.gradle.api.tasks.Upload void configureProject(Project project, String outputDir) { if (!project.hasProperty("android")) { @@ -16,6 +18,8 @@ void configureProject(Project project, String outputDir) { throw new GradleException("Can't generate AAR on a non Android library project."); } + project.apply plugin: "maven" + // Snapshot versions include the timestamp in the artifact name. // Therefore, remove the snapshot part, so new runs of `flutter build aar` overrides existing artifacts. // This version isn't relevant in Flutter since the pub version is used @@ -30,51 +34,13 @@ void configureProject(Project project, String outputDir) { addAarTask(project, variant) } - project.publishing { + project.uploadArchives { repositories { - maven { - url = uri("file://${outputDir}/outputs/repo") + mavenDeployer { + repository(url: "file://${outputDir}/outputs/repo") } } } - - // Some extra work to have alternative publications with the same format as the old maven plugin. - // Instead of using classifiers for the variants, the old maven plugin appended `_{variant}` to the artifactId - - // First, create a default MavenPublication for each variant (except "all" since that is used to publish artifacts in the new way) - project.components.forEach { component -> - if (component.name != "all") { - project.publishing.publications.create(component.name, MavenPublication) { - from component - } - } - } - - // then, rename the artifactId to include the variant and make sure to remove any classifier - // data tha gradle has set, as well as adding a tag pointing to the new coordinates - project.publishing.publications.forEach { pub -> - def relocationArtifactId = pub.artifactId - pub.artifactId = "${relocationArtifactId}_${pub.name}" - pub.alias = true - - pub.pom.distributionManagement { - relocation { - // New artifact coordinates - groupId = "${pub.groupId}" - artifactId = "${relocationArtifactId}" - version = "${pub.version}" - message = "Use classifiers rather than _variant for new publish plugin" - } - } - - } - - // also publish the artifacts in the new way, using one set of coordinates with classifiers - project.publishing.publications.create("all", MavenPublication) { - from project.components.all - alias false - } - if (!project.property("is-plugin").toBoolean()) { return } @@ -118,21 +84,55 @@ void addAarTask(Project project, variant) { String variantName = variant.name.capitalize() String taskName = "assembleAar$variantName" project.tasks.create(name: taskName) { - // This check is required to be able to configure the archives before `publish` runs. + // This check is required to be able to configure the archives before `uploadArchives` runs. if (!project.gradle.startParameter.taskNames.contains(taskName)) { return } + project.uploadArchives.repositories.mavenDeployer { + pom { + artifactId = "${project.name}_${variant.name.toLowerCase()}" + } + } + overrideDefaultPublishConfig(project, variant) // Generate the Maven artifacts. - finalizedBy "publish" + finalizedBy "uploadArchives" } } -// maven-publish has to be applied _before_ the project gets evaluated, but some of the code in -// `configureProject` requires the project to be evaluated. Apply the maven plugin to all projects, but -// only configure it if it matches the conditions in `projectsEvaluated` +// This method mimics the logic in AGP when `android.defaultPublishConfig` is set in `build.gradle`: +// https://android.googlesource.com/platform/tools/base/+/studio-master-dev/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/variant/VariantHelper.java +// +// Unfortunately, `android.defaultPublishConfig` cannot be overridden at this point since +// AGP already run this code. +void overrideDefaultPublishConfig(Project project, variant) { + String variantName = variant.name.capitalize() + Task bundle = project.tasks.findByName("bundle${variantName}Aar") // gradle:3.2.0 + if (bundle == null) { + bundle = project.tasks.findByName("bundle${variantName}") // gradle:3.1.0 + } + if (bundle == null) { + throw new GradleException("Can't generate AAR for variant ${variantName}."); + } + // Clear the current archive artifacts since the artifacts are based on `android.defaultPublishConfig`. + project.configurations["archives"].artifacts.clear() + // Add the artifact that will be published. + project.artifacts.add("archives", bundle) -allprojects { - apply plugin: "maven-publish" + def scopeMappings = project.uploadArchives.repositories.mavenDeployer.pom.scopeMappings + // Clear the scope mappings added by AGP since they are based on the current `android.defaultPublishConfig`. + scopeMappings.mappings.clear() + // Add the new mappings. + for (Configuration configuration : flattenConfiguration(variant.runtimeConfiguration)) { + scopeMappings.addMapping(/* priority = */ 300, configuration, "compile") + } +} + +Set flattenConfiguration(Configuration configuration) { + Set configs = [configuration] + for (Configuration extend : configuration.extendsFrom) { + configs.addAll(flattenConfiguration(extend)) + } + return configs } projectsEvaluated { diff --git a/packages/flutter_tools/lib/src/android/gradle.dart b/packages/flutter_tools/lib/src/android/gradle.dart index 19948c57b63..58276f143f6 100644 --- a/packages/flutter_tools/lib/src/android/gradle.dart +++ b/packages/flutter_tools/lib/src/android/gradle.dart @@ -726,7 +726,7 @@ void printHowToConsumeAar({ for (final String buildMode in buildModes) { logger.printStatus(""" - ${buildMode}Implementation '$androidPackage:flutter:$buildNumber:$buildMode'"""); + ${buildMode}Implementation '$androidPackage:flutter_$buildMode:$buildNumber'"""); } logger.printStatus(''' diff --git a/packages/flutter_tools/lib/src/android/gradle_utils.dart b/packages/flutter_tools/lib/src/android/gradle_utils.dart index 2204ee4f6e8..4859fb6710b 100644 --- a/packages/flutter_tools/lib/src/android/gradle_utils.dart +++ b/packages/flutter_tools/lib/src/android/gradle_utils.dart @@ -29,7 +29,8 @@ import 'android_sdk.dart'; // https://kotlinlang.org/docs/gradle.html#plugin-and-versions const String templateDefaultGradleVersion = '7.4'; const String templateAndroidGradlePluginVersion = '7.1.2'; -const String templateDefaultGradleVersionForModule = '7.1.2'; +// TODO(egarciad): Gradle 7 breaks AARs builds: https://github.com/flutter/flutter/issues/101083 +const String templateDefaultGradleVersionForModule = '4.1.0'; const String templateKotlinGradlePluginVersion = '1.6.10'; // These versions should match the values in flutter.gradle (FlutterExtension). 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 75b1e6cb083..034421ad06d 100644 --- a/packages/flutter_tools/test/general.shard/android/gradle_test.dart +++ b/packages/flutter_tools/test/general.shard/android/gradle_test.dart @@ -543,9 +543,9 @@ flutter: ' 3. Make the host app depend on the Flutter module:\n' '\n' ' dependencies {\n' - " releaseImplementation 'com.mycompany:flutter:2.2:release'\n" - " debugImplementation 'com.mycompany:flutter:2.2:debug'\n" - " profileImplementation 'com.mycompany:flutter:2.2:profile'\n" + " releaseImplementation 'com.mycompany:flutter_release:2.2'\n" + " debugImplementation 'com.mycompany:flutter_debug:2.2'\n" + " profileImplementation 'com.mycompany:flutter_profile:2.2'\n" ' }\n' '\n' '\n' @@ -594,7 +594,7 @@ flutter: ' 3. Make the host app depend on the Flutter module:\n' '\n' ' dependencies {\n' - " releaseImplementation 'com.mycompany:flutter:1.0:release'\n" + " releaseImplementation 'com.mycompany:flutter_release:1.0'\n" ' }\n' '\n' 'To learn more, visit https://flutter.dev/go/build-aar\n' @@ -632,7 +632,7 @@ flutter: ' 3. Make the host app depend on the Flutter module:\n' '\n' ' dependencies {\n' - " debugImplementation 'com.mycompany:flutter:1.0:debug'\n" + " debugImplementation 'com.mycompany:flutter_debug:1.0'\n" ' }\n' '\n' 'To learn more, visit https://flutter.dev/go/build-aar\n' @@ -671,7 +671,7 @@ flutter: ' 3. Make the host app depend on the Flutter module:\n' '\n' ' dependencies {\n' - " profileImplementation 'com.mycompany:flutter:1.0:profile'\n" + " profileImplementation 'com.mycompany:flutter_profile:1.0'\n" ' }\n' '\n' '\n'