Android 如何组合多个源集
我正在尝试从Eclipse/ANT迁移到Android Studio/Gradle。 我们当前的ant构建支持N个客户(构建目标),一个客户由三重皮肤/玩家/客户定义。 每个皮肤/玩家/客户可能包含src、资源、资产 在Gradle建模的最佳方式是什么 我目前为每位客户创建了productFlavor,如下所示Android 如何组合多个源集,android,gradle,android-gradle-plugin,Android,Gradle,Android Gradle Plugin,我正在尝试从Eclipse/ANT迁移到Android Studio/Gradle。 我们当前的ant构建支持N个客户(构建目标),一个客户由三重皮肤/玩家/客户定义。 每个皮肤/玩家/客户可能包含src、资源、资产 在Gradle建模的最佳方式是什么 我目前为每位客户创建了productFlavor,如下所示 productFlavors { cust1{ applicationId='com.xyz.cust1' customer="cust1"
productFlavors {
cust1{
applicationId='com.xyz.cust1'
customer="cust1"
skin="skinX"
player="playerA"
}
cust2{
applicationId='com.xyz.cust2'
customer="cust2"
skin="skinY"
player="playerB"
}
}
但我在以紧凑的方式定义相应的源集时遇到了问题
我可以写一些像这样的东西
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 {
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')
}
这可能吗
另一种方法是为每个播放器、皮肤和客户创建一个源集,并通过将主源集与播放器、皮肤和客户的源集相结合,为productFlavor创建一个源集
感谢您的投入 我会调查(以前称为风味组,也称为多味变体)
使用这些,您将为皮肤、玩家和客户设置三个口味维度。每个皮肤在skin
维度中获得productFlavor
,每个玩家在player
维度中获得productFlavor
,每个客户在customer
维度中获得productFlavor
然后,您将有类似于
assembleSkinxPlayeraCust1Debug
的任务,它将从skinx
、playera
、cust1
和debug
源集构建一个应用程序。谢谢!我试试看