Per среды Android Gradle построить:Пользовательских активный аромат конкретного Gradle задач, включенные в процессе сборки
В настоящее время я прочитал мой код версии, версию и название от местной version.properties файл через «readVersions» Gradle задачу. Я в процессе добавления вкусов в свое приложение. Эти ароматы потребуют разных версий. Поэтому я подумывал о создании двух разных файлов version.properties внутри специфических каталогов вкуса (например, one/version.properties, two/version.properties) рядом со списками «res» и «src», специфичными для вкуса.
У меня есть задача readVersions:
task readVersions() {
def Properties versionProps = new Properties()
def versionPropsFile = file('version.properties')
if (versionPropsFile.exists())
versionProps.load(new FileInputStream(versionPropsFile))
def v_code = (versionProps['VERSION_CODE'] ?: "0").toInteger()
def v_name = versionProps['VERSION_NAME']
// Set
versionCode v_code
versionName v_name
}
project.afterEvaluate {
preBuild.dependsOn readVersions
}
Я хотел бы иметь новую readVersions задачу, которая включает в себя вкус, так что я могу использовать его при обращении к файлу «version.properties» в «аромат» каталог.
Я пробовал:
android.productFlavors.all{ flavor ->
task ("${flavor.name}_readVersions")<<{
def versionPropsFile = file(flavor.name+'/version.properties')
...
Но тогда я не знаю, как получить только задачи активного аромата, чтобы работать во время «preBuild» шаг.
Концептуально Я хочу это:
project.afterEvaluate {
preBuild.dependsOn ${active_flavor}_readVersions
}
Для тех, кто рекомендует реорганизовать и найти проще решения. Мой процесс сборки в настоящее время имеет другие зависимости от этих файлов version.properties. Я мог просто определить код версии и название версии в двух местах (например, внутри «вкус», а также в файле version.properties отдушки, но я действительно хочу СУХИХ конфиги)
Нет «активного аромата». Ваш файл 'build.gradle' не создает ваше приложение. Ваш файл 'build.gradle' создает объектную модель * how * для создания вашего приложения. Строит работу с объектной моделью. Вам нужно «dependOn» для обоих вкусов, где соответствующие специфичные для аромата задачи зависят от ваших специфических специфических задач. – CommonsWare
Да, я это понимаю. Вот почему я попытался подчеркнуть эту часть в моем «концептуальном» дескрипторе. Вы понимаете, что я пытаюсь сделать? Вы знаете, как создать объектную модель, которая достигает того, что я пытаюсь сделать? Я могу попытаться определить свою цель дальше, если нет. – FishStix
Я не решаюсь создать кучу пользовательских «dependOn» для ароматов, где соответствующие специфичные для аромата задачи зависят от ваших индивидуальных специфических задач. Что делать, если я получаю 10 или 20 ароматов? Я просто хочу захватить локальную версию Code/Name из файла $ {flavor.name} /version.properties. Для этого мне действительно нужны 20 пользовательских задач? – FishStix