From 2b0255f0d9f38f5671eaffe2438240ed048670cc Mon Sep 17 00:00:00 2001 From: Elsabe Ros <1587721+AesSedai101@users.noreply.github.com> Date: Wed, 13 Apr 2022 07:19:08 +0200 Subject: [PATCH] Use the maven-publish plugin to publish AAR files. (#101276) --- .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, 292 insertions(+), 115 deletions(-) diff --git a/.ci.yaml b/.ci.yaml index e94fccce2af..2cdbefa7faa 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","path":"java"}, + {"name":"openjdk_11","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","path":"java11"}, + {"name":"openjdk_11","path":"java"}, {"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","path":"java11"}, + {"name":"openjdk_11","path":"java"}, {"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","path":"java11"}, + {"name":"openjdk_11","path":"java"}, {"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","path":"java11"}, + {"name":"openjdk_11","path":"java"}, {"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","path":"java11"}, + {"name":"openjdk_11","path":"java"}, {"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","path":"java11"}, + {"name":"openjdk_11","path":"java"}, {"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","path":"java11"}, + {"name":"openjdk_11","path":"java"}, {"name":"pub_cache","path":".pub-cache"} ] dependencies: >- @@ -188,13 +188,13 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk", "path": "java"} + {"name": "openjdk_11", "path": "java"} ] dependencies: >- [ {"dependency": "android_sdk", "version": "version:31v8"}, {"dependency": "chrome_and_driver", "version": "version:96.2"}, - {"dependency": "open_jdk"} + {"dependency": "open_jdk", "version": "11"} ] tags: > ["devicelab","hostonly"] @@ -460,7 +460,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] dependencies: >- [ @@ -484,7 +484,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] dependencies: >- [ @@ -508,7 +508,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] dependencies: >- [ @@ -532,7 +532,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] dependencies: >- [ @@ -556,7 +556,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] dependencies: >- [ @@ -580,7 +580,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] dependencies: >- [ @@ -628,7 +628,7 @@ targets: caches: >- [ {"name":"gradle", "path":"gradle"}, - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] dependencies: >- [ @@ -653,7 +653,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] dependencies: >- [ @@ -678,7 +678,7 @@ targets: caches: >- [ {"name":"gradle", "path":"gradle"}, - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] dependencies: >- [ @@ -1549,7 +1549,7 @@ targets: ] caches: >- [ - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] scheduler: luci @@ -1567,7 +1567,7 @@ targets: ] caches: >- [ - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] scheduler: luci @@ -1585,7 +1585,7 @@ targets: ] caches: >- [ - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] scheduler: luci @@ -1603,7 +1603,7 @@ targets: ] caches: >- [ - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] scheduler: luci @@ -1621,7 +1621,7 @@ targets: ] caches: >- [ - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] scheduler: luci @@ -1639,7 +1639,7 @@ targets: ] caches: >- [ - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] scheduler: luci @@ -1657,7 +1657,7 @@ targets: ] caches: >- [ - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] scheduler: luci @@ -1675,7 +1675,7 @@ targets: ] caches: >- [ - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] scheduler: luci @@ -2274,7 +2274,7 @@ targets: ] caches: >- [ - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] scheduler: luci @@ -2434,12 +2434,12 @@ targets: caches: >- [ {"name":"gradle", "path":"gradle"}, - {"name": "openjdk", "path": "java"} + {"name": "openjdk_11", "path": "java"} ] dependencies: >- [ {"dependency": "android_sdk", "version": "version:31v8"}, - {"dependency": "open_jdk"} + {"dependency": "open_jdk", "version": "11"} ] tags: > ["devicelab","hostonly"] @@ -2723,7 +2723,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] dependencies: >- [ @@ -2770,7 +2770,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] dependencies: >- [ @@ -2794,7 +2794,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] dependencies: >- [ @@ -2820,7 +2820,7 @@ targets: caches: >- [ {"name":"gradle", "path":"gradle"}, - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] dependencies: >- [ @@ -3234,7 +3234,7 @@ targets: ] caches: >- [ - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] scheduler: luci @@ -3252,7 +3252,7 @@ targets: ] caches: >- [ - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] scheduler: luci @@ -3270,7 +3270,7 @@ targets: ] caches: >- [ - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] scheduler: luci @@ -3687,13 +3687,13 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk", "path": "java"} + {"name": "openjdk_11", "path": "java"} ] dependencies: >- [ {"dependency": "android_sdk", "version": "version:31v8"}, {"dependency": "chrome_and_driver", "version": "version:96.2"}, - {"dependency": "open_jdk"} + {"dependency": "open_jdk", "version": "11"} ] tags: > ["devicelab","hostonly"] @@ -3928,7 +3928,7 @@ targets: ] caches: >- [ - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] tags: > ["devicelab","hostonly"] @@ -3971,7 +3971,7 @@ targets: caches: >- [ {"name":"gradle", "path":"gradle"}, - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] dependencies: >- [ @@ -3996,7 +3996,7 @@ targets: caches: >- [ {"name":"gradle","path":"gradle"}, - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] dependencies: >- [ @@ -4299,7 +4299,7 @@ targets: ] caches: >- [ - {"name": "openjdk", "path": "java11"} + {"name": "openjdk_11", "path": "java"} ] scheduler: luci diff --git a/AUTHORS b/AUTHORS index 4ec4dabc1e3..a3fcb825ea6 100644 --- a/AUTHORS +++ b/AUTHORS @@ -93,3 +93,4 @@ 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 6676a0d61fc..15c372ce02e 100644 --- a/dev/devicelab/bin/tasks/android_obfuscate_test.dart +++ b/dev/devicelab/bin/tasks/android_obfuscate_test.dart @@ -67,21 +67,45 @@ Future main() async { ]); }); - final String outputAarDirectory = path.join( + final String outputAarDirectoryOld = path.join( flutterProject.rootPath, 'build/host/outputs/repo/com/example/${flutterProject.name}/flutter_release/1.0/flutter_release-1.0.aar', ); - final Iterable aarFiles = await getFilesInAar(outputAarDirectory); + final Iterable oldAarFiles = await getFilesInAar(outputAarDirectoryOld); checkCollectionContains([ ...flutterAssets, 'jni/armeabi-v7a/libapp.so', - ], aarFiles); + ], 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); // Verify that an identifier from the Dart project code is not present // in the compiled binary. await inDirectory(flutterProject.rootPath, () async { - await exec('unzip', [outputAarDirectory]); + 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]); 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 0d47b4b05e2..ad8b9bb6308 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'); + section('Check release Maven artifacts (old format)'); checkFileExists(path.join( repoPath, @@ -111,7 +111,7 @@ Future main() async { 'flutter_release-1.0.aar', )); - final String releasePom = path.join( + final String releasePomOld = path.join( repoPath, 'io', 'flutter', @@ -122,7 +122,7 @@ Future main() async { 'flutter_release-1.0.pom', ); - checkFileExists(releasePom); + checkFileExists(releasePomOld); checkFileExists(path.join( repoPath, @@ -146,6 +146,54 @@ 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([ @@ -153,8 +201,17 @@ Future main() async { 'armeabi_v7a_release', 'arm64_v8a_release', 'x86_64_release', - 'plugin_with_android_release', - ], releasePom); + '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); section('Check assets in release AAR'); @@ -180,7 +237,29 @@ Future main() async { ) ); - section('Check debug Maven artifacts'); + 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)'); checkFileExists(path.join( repoPath, @@ -193,7 +272,7 @@ Future main() async { 'flutter_debug-1.0.aar', )); - final String debugPom = path.join( + final String debugPomOld = path.join( repoPath, 'io', 'flutter', @@ -204,7 +283,7 @@ Future main() async { 'flutter_debug-1.0.pom', ); - checkFileExists(debugPom); + checkFileExists(debugPomOld); checkFileExists(path.join( repoPath, @@ -228,6 +307,54 @@ 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([ @@ -236,8 +363,18 @@ Future main() async { 'x86_64_debug', 'armeabi_v7a_debug', 'arm64_v8a_debug', - 'plugin_with_android_debug', - ], debugPom); + '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); section('Check assets in debug AAR'); @@ -252,11 +389,27 @@ 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 e133e45c431..c4bf0655d34 100644 --- a/packages/flutter_tools/gradle/aar_init_script.gradle +++ b/packages/flutter_tools/gradle/aar_init_script.gradle @@ -6,9 +6,7 @@ import java.nio.file.Paths import org.gradle.api.Project import org.gradle.api.artifacts.Configuration -import org.gradle.api.artifacts.maven.MavenDeployer -import org.gradle.api.plugins.MavenPlugin -import org.gradle.api.tasks.Upload +import org.gradle.api.publish.maven.MavenPublication void configureProject(Project project, String outputDir) { if (!project.hasProperty("android")) { @@ -18,8 +16,6 @@ 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 @@ -34,13 +30,51 @@ void configureProject(Project project, String outputDir) { addAarTask(project, variant) } - project.uploadArchives { + project.publishing { repositories { - mavenDeployer { - repository(url: "file://${outputDir}/outputs/repo") + maven { + url = uri("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 } @@ -84,55 +118,21 @@ 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 `uploadArchives` runs. + // This check is required to be able to configure the archives before `publish` 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 "uploadArchives" + finalizedBy "publish" } } -// 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) +// 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` - 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 +allprojects { + apply plugin: "maven-publish" } projectsEvaluated { diff --git a/packages/flutter_tools/lib/src/android/gradle.dart b/packages/flutter_tools/lib/src/android/gradle.dart index 58276f143f6..19948c57b63 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_$buildMode:$buildNumber'"""); + ${buildMode}Implementation '$androidPackage:flutter:$buildNumber:$buildMode'"""); } 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 4859fb6710b..2204ee4f6e8 100644 --- a/packages/flutter_tools/lib/src/android/gradle_utils.dart +++ b/packages/flutter_tools/lib/src/android/gradle_utils.dart @@ -29,8 +29,7 @@ import 'android_sdk.dart'; // https://kotlinlang.org/docs/gradle.html#plugin-and-versions const String templateDefaultGradleVersion = '7.4'; const String templateAndroidGradlePluginVersion = '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 templateDefaultGradleVersionForModule = '7.1.2'; 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 034421ad06d..75b1e6cb083 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_release:2.2'\n" - " debugImplementation 'com.mycompany:flutter_debug:2.2'\n" - " profileImplementation 'com.mycompany:flutter_profile:2.2'\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" ' }\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_release:1.0'\n" + " releaseImplementation 'com.mycompany:flutter:1.0:release'\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_debug:1.0'\n" + " debugImplementation 'com.mycompany:flutter:1.0:debug'\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_profile:1.0'\n" + " profileImplementation 'com.mycompany:flutter:1.0:profile'\n" ' }\n' '\n' '\n'