Как можно управлять вариантами выходов с помощью плагина Android Gradle 3.0.0+?

Последняя версия (3.0.0) плагина Android для Gradle нарушила API для манипулирования выходными параметрами. Этот API-интерфейс использовался для управления файлами, создаваемыми во время сборки (например, AndroidManifest.xml), и был удален для сокращения времени настройки.

Какие новые API доступны для манипулирования выходными данными варианта и чем они отличаются от API 2.X?

1 ответ

Решение

Изменения в outputFiles теперь задокументированы на сайте разработчика Android.

По сути, вместо того, чтобы обращаться к выходному файлу напрямую из API Gradle, рекомендуется вместо этого обратиться к каталогу, содержащему файл. Приведенный ниже фрагмент демонстрирует это с помощью файла манифеста, но может применяться и к другим выходным файлам.

android.applicationVariants.all { variant ->
    variant.outputs.all { output ->
        output.processManifest.doLast {

            String manifestPath = "$manifestOutputDirectory/AndroidManifest.xml"
            def manifestContent = file(manifestPath).getText()

            // Manipulate the file as needed
        }
    }
}

Похоже, они снова изменили этот интерфейс. (плагин для Android Gradle 3.3+ или Gradle 5.4+)

Я использую следующее для получения manifestPath:

def manifestPath = "${manifestOutputDirectory.get().asFile}/AndroidManifest.xml"

Понял это отсюда

Получал java.io.FileNotFoundException со следующим в пути

property(interface org.gradle.api.file.Directory, fixed(class org.gradle.api.internal.file.DefaultFilePropertyFactory$FixedDirectory, /Users/me/app/build/intermediates/merged_manifests/debug))
Другие вопросы по тегам