У меня есть проект библиотеки Android с несколькими вариантами. Я загружаю файлы aar этих разных разновидностей в частный репозиторий, используя плагин 'maven-publish'
. Я использовал 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-интерфейс "OptionOutput.getPackageLibrary()" устарел и был заменен на "variable.getPackageLibraryProvider()". Он будет удален в конце 2019 года. Для получения дополнительной информации см. Https://d.android.com/r/tools/task-configuration-avoidance. Чтобы определить, что вызывает optionOutput.getPackageLibrary(), используйте -Pandroid.debug.obsoleteApi = true в командной строке для отображения трассировки стека.
Это не проблема как таковая, поскольку она все еще работает, но мне не нравится это предупреждение, и, поскольку я build.gradle
вещи в своем build.gradle
, я решил попытаться исправить это.
Я пробовал много разных комбинаций, пытаясь найти информацию о том, как получить aar от поставщика библиотеки пакетов. По этому вопросу почти ничего не доступно (что действительно расстраивает), но я нашел этот пост, который заставил меня попробовать:
variant.getPackageLibraryProvider().get()
Это обеспечивает com.android.build.gradle.tasks.BundleAar
который, кажется, работает, когда установлен как артефакт публикации (artifact variant.getPackageLibraryProvider().get()
) и исправляет предупреждение.
Это правильный способ исправить это предупреждение, или по какой-то причине оно будет иметь неприятные последствия? Кто-нибудь знает, где я могу получить больше информации об этом?
Используя источники 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"
}
}
}
}
...
}