Gradle, как заменить устаревший 'instanceOutput.getPackageLibrary ()' на 'variable.getPackageLibraryProvider ()'? - PullRequest
2 голосов
/ 06 марта 2019

У меня есть проект библиотеки 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, я решил попытаться исправить это.

Я пробовал много разных комбинаций, пытаясь найти информацию о том, как получить aar от провайдера библиотеки пакетов. По этому вопросу почти ничего не доступно (что действительно расстраивает), но я нашел этот пост , который побудил меня попробовать:

variant.getPackageLibraryProvider().get()

Это обеспечивает com.android.build.gradle.tasks.BundleAar, который, кажется, работает, когда установлен как артефакт публикации (artifact variant.getPackageLibraryProvider().get()), и исправляет предупреждение.

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

1 Ответ

0 голосов
/ 16 марта 2019

Используя источники 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"
                }
            }
        }
    }
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...