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

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

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

Ответ 1

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

По существу, вместо доступа к outputFile непосредственно из 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
        }
    }
}

Ответ 2

Похоже, они снова изменили этот интерфейс. (плагин для 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))