Gradle 如何用“variant.getPackageLibraryProvider()”替换过时的“variantOutput.getPackageLibrary()”?

Dud*_*ude 5 android build.gradle android-gradle-plugin

我有一个具有多种风格的 Android 库项目。我使用'maven-publish'插件将这些不同风格的 aar 文件上传到私人存储库。我一直在使用variant.outputs[0].outputFile作为publishing.publications.artifact参数的值。

publishing.publications.create variant.flavorName, MavenPublication, {
            groupId "$libraryGroupId.$variant.flavorName"
            artifactId libraryArtifactId
            version libraryVersion
            artifact variant.outputs[0].outputFile           
        }
Run Code Online (Sandbox Code Playgroud)

它运行良好,但我最近更新了库的 gradle 插件com.android.tools.build:gradle:3.3.2并收到以下警告:

警告:API 'variantOutput.getPackageLibrary()' 已过时并已替换为 'variant.getPackageLibraryProvider()'。它将在 2019 年底移除。有关更多信息,请参阅https://d.android.com/r/tools/task-configuration-avoidance。要确定是什么调用了 variantOutput.getPackageLibrary(),请在命令行上使用 -Pandroid.debug.obsoleteApi=true 以显示堆栈跟踪。

这本身不是问题,因为它仍然有效,但我不喜欢这个警告,因为我一直在清理我的东西build.gradle,我想我会尝试修复它。

我尝试了很多不同的组合,在互联网上搜索以尝试查找有关如何从包库提供商处获取 aar 的信息。关于这个主题几乎没有可用的东西(这真的很令人沮丧),但我确实找到了这篇文章,这让我尝试:

variant.getPackageLibraryProvider().get()

这提供了一个com.android.build.gradle.tasks.BundleAar在设置为发布的工件 ( artifact variant.getPackageLibraryProvider().get())时似乎可以工作并修复了警告的方法。

这是解决此警告的正确方法还是会因某种原因适得其反?有谁知道我可以从哪里获得有关此的更多信息?

F R*_*ell 1

使用GradleAndroid Gradle 插件源作为参考,我想出了以下内容,并且警告消失了:

publishing {
    publications {
        android.libraryVariants.all { variant ->
            if (variant.buildType.name == "release") {
                aar(MavenPublication) {
                    artifact(variant.packageLibraryProvider.get().archivePath)
                    groupId = '<your group id>'
                    artifactId = "$project.name"
                }
            }
        }
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)