我有一个具有多种功能的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
}
运行良好,但是我最近将库的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的信息。关于这个主题几乎没有可用的东西(这确实令人沮丧),但是我确实发现this post促使我尝试使用:
variant.getPackageLibraryProvider().get()
这提供了一个com.android.build.gradle.tasks.BundleAar
,当设置为发布的工件(artifact variant.getPackageLibraryProvider().get()
时似乎可以正常工作,并且可以修复警告。
这是解决此警告的正确方法,还是由于某些原因对我适得其反?有谁知道我在哪里可以获得更多有关此的信息?
答案 0 :(得分:0)
使用Gradle和Android Gradle Plugin来源作为参考,我想到了以下内容,但警告已消失:
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"
}
}
}
}
...
}