Gradle, как заменить устаревший 'variableOutput.getPackageLibrary ()' на 'variable.getPackageLibraryProvider ()'?

1

У меня есть проект библиотеки 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()) и исправляет предупреждение.

Это правильный способ исправить это предупреждение, или по какой-то причине оно будет иметь неприятные последствия? Кто-нибудь знает, где я могу получить больше информации об этом?

Теги:
build.gradle
android-gradle

1 ответ

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"
                }
            }
        }
    }
    ...
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню