这个问题是我另一个问题的延续,我想进一步改进。
我可以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 文件。
- 一个自定义类,我可以将其写入单独的文件并从类中的静态成员中获取数据。
除了风味名称之外,我还打算将以下内容存储在外部源(以上之一)中:
- 应用程序 ID(我将拉到
productFlavors
) - 广告单元 ID(每种口味两个)
- 其他一些自定义值,如类别等。
PORPOSE: 我想编写一段通用代码来迭代并动态创建productFlavors
and 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()
但我不太确定如何使用这些。由于方法可用,我确信可以做我想做的事情。
有没有人这样做并有一些指示?