Канонический способ написания задачи Gradle для добавления новых вкусов продуктов Android

Я хочу автоматизировать работу с ароматами в Android-проекте, используя пользовательские задачи Gradle.
Например, реализовать задачу addFlavor с двумя параметрами: flavorName и flavorLogo. Задача должна добавить новый вкус, сделав следующие шаги:

  1. Обновите раздел productFlavors в файле build.gradle, добавив в него новый вариант:

    flavorName {
       buildConfigField 'String', 'PARTNER', '"flavorName"'
       packageName 'com.stackoverflow.askquestion.flavorname'
    }
    
  2. Добавьте папку flavor и скопируйте flavorLogo .png файл в flavorName/res/drawable-xxhdpi/ic_launcher.png

Каков правильный и канонический способ сделать это с помощью специальной задачи Gradle?


person AlexKorovyansky    schedule 18.03.2014    source источник


Ответы (1)


Вы не можете использовать задачи для создания вкусов. Вкусы описывают модель, используемую для создания задач, поэтому наоборот.

Однако вы можете напрямую поместить код в свой build.gradle, который будет создавать его для вас каждый раз, когда выполняется build.gradle (в основном, каждый раз, когда вы запускаете команду Gradle). Вы можете написать что-то вроде:

String[] customFlavors = ['flavor1', 'flavor2']

customFlavors.each { name ->
    def flavor = android.productFlavors.create(name)
    flavor.buildConfigField('String', 'PARTNER', "\"${name}\""
    flavor.packageName("com.so.question.${name}")
}
person Xavier Ducrohet    schedule 18.03.2014