Этот вопрос является продолжением другого моего вопроса, который я хочу улучшить.
Я могу сгруппировать вкусы (имеющие общую конфигурацию) под sourceSets
со следующим кодом:
(получил от гения в связанном вопросе выше)
import com.android.build.gradle.api.AndroidSourceSet
android {
sourceSets {
[flavor2, flavor4].each { AndroidSourceSet ss ->
ss.assets.srcDirs = ['repo-assets/flavor2']
ss.res.srcDirs = ['repo-res/flavor2']
}
}
}
Теперь мне было интересно, можно ли получить список [flavor2, flavor4]
из любого из следующих:
- XML-файл, по которому я могу выполнить итерацию, чтобы получить все варианты (которые я положу туда)
- Файл CSV, по которому я могу перебирать и извлекать значения.
- Пользовательский класс, который я могу написать в отдельном файле и получить данные от статических членов в классе.
В дополнение к имени аромата я намерен хранить во внешнем источнике следующее (один из приведенных выше):
- идентификатор приложения (который я вытащу на
productFlavors
) - идентификаторы рекламных блоков (по два на каждый вкус)
- некоторые другие пользовательские значения, такие как категория и т. д.
ПОЛОЖЕНИЕ: я хочу написать общий фрагмент кода для итерации и динамического создания productFlavors
и sourceSets
. Я обобщил sourceSets
почти до 90%, и теперь одного блока достаточно для всех вкусов.
Сейчас это выглядит примерно так:
sourceSets {
[flavor1, flavor2, flavor3 ...].each { AndroidSourceSet ss ->
ss.assets.srcDirs = ['repo-assets/' + ss.name.split('_')[0]]
ss.res.srcDirs = ['repo-mipmap/' + ss.name.split('_')[0] , 'repo-strings/' + ss.name]
}
}
Также хочу сделать то же самое для productFlavors
, как указано выше.
ЗАСТРЕЛ НА: получение списка [flavor2, flavor4]
в приведенном выше коде из внешнего источника (вместе с несколькими дополнительными полями для каждого варианта, как указано выше).
Я вижу такие методы, как
productFlavors.add()
productFlavors.addAll()
но я не совсем уверен, как их использовать. Поскольку методы доступны, я уверен, что можно сделать то, что я пытаюсь сделать.
Кто-нибудь сделал это и имеет несколько указателей?