我正在尝试从Eclipse / ANT迁移到Android Studio / Gradle。 我们当前的ant-build支持N个客户(构建目标),客户由三元组皮肤/玩家/客户定义。 每个皮肤/玩家/客户都可能包含src,资源,资产......
在Gradle中对此进行建模的最佳方法是什么?
我目前为每位客户创建一个productFlavor,如下所示
productFlavors {
cust1{
applicationId='com.xyz.cust1'
customer="cust1"
skin="skinX"
player="playerA"
}
cust2{
applicationId='com.xyz.cust2'
customer="cust2"
skin="skinY"
player="playerB"
}
}
但是我在以紧凑的方式定义相应的sourceSets时遇到了问题。
我可以写类似
的内容sourceSets.cust1 {
java.srcDir('pool/playerA/src')
res.srcDir('pool/skinX/res')
res.srcDir('pool/playerA/res')
res.srcDir('pool/cust1/res')
assets.srcDir('pool/playerA/assets')
assets.srcDir('pool/skinX/assets')
jniLibs.srcDir('pool/playerA/libs')
}
对于每个客户,但这导致N几乎相同的sourceSets
我希望有一个像
这样的单一参数化源集sourceSets {
java.srcDir('pool/${player}/src')
res.srcDir('pool/${skin}/res')
res.srcDir('pool/${player}/res')
res.srcDir('pool/${customer}/res')
assets.srcDir('pool/${player}/assets')
assets.srcDir('pool/${skin}/assets')
jniLibs.srcDir('pool/${player}/libs')
}
这可能吗?
一种替代方法是为每个玩家,皮肤和客户创建一个sourceSet,并通过将主要的sourceSet与播放器,皮肤和客户的源集合组合为productFlavor创建一个sourceSet
输入赞赏!
答案 0 :(得分:1)
我调查flavor dimensions(以前称为风味组,也称为多种风味变体)。
使用这些,您可以为皮肤,玩家和客户设置三种风味尺寸。每个皮肤在productFlavor
维度获得skin
,每个玩家在productFlavor
维度获得player
,每个客户在{{productFlavor
获得customer
1}}维度。
然后,您将拥有assembleSkinxPlayeraCust1Debug
之类的任务,这些任务将构建来自skinx
,playera
,cust1
和debug
源集的应用。