Запись значения productFlavor в файл с задачей Gradle - PullRequest
0 голосов
/ 28 января 2019

Я настраиваю проект Android для поддержки белой маркировки.В рамках этой настройки мне нужно записать информацию о брендинге (основной цвет и т. Д.) В файл.Чтобы интегрировать это в процесс сборки, я пытаюсь написать задачу Gradle, чтобы сделать это автоматически.В файле app.gradle я указываю вкусы продуктов и конкретные значения для каждого из них:

productFlavors {
    flavorA {
        dimension 'default'
        applicationId "com.myapp.flavora"
        resValue "string", "app_name", "Flavor A"
        resValue "string", "primary_color", "#363636"
    }

    ...
}

У меня есть задача Gradle для записи в файл:

task copyGlobals {
    println "COPY GLOBALS"
    project.file('../globals.js') << 'hello world'
}

Мой вопросявляется: Как я могу загрузить значение primary_color и записать его в файл globals.js в рамках задачи?

1 Ответ

0 голосов
/ 29 января 2019

Чтобы получить доступ к разновидностям продукта, вам нужно перебрать все варианты приложения:

android.applicationVariants.all { com.android.build.gradle.api.ApplicationVariant variant ->
    // Here you can check concrete flavor, for example:
    if (variant.flavorName == "flavorA") {
        // Here you need to iterate all resValues of your variant
        variant.mergedFlavor.resValues.each { String key, com.android.builder.model.ClassField field ->
            // field.name - is name of your resValue, for example, "primary_color"
            // field.value - is value of your resValue, for example, "#363636"
            println "Name = ${field.name}  Value = ${field.value}"
            // Also you can get your value through  String key.
            println "Value = $key"
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...