Как можно управлять вариантами выходов с помощью плагина 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))