可以说我有以下内容sourceSets
:
sourceSets {
flavor1 {
assets.srcDirs = ['repo-assets/flavor1']
res.srcDirs = ['repo-res/flavor1']
}
flavor2 {
assets.srcDirs = ['repo-assets/flavor2']
res.srcDirs = ['repo-res/flavor2']
}
flavor3 {
assets.srcDirs = ['repo-assets/flavor1']
res.srcDirs = ['repo-res/flavor1']
}
flavor4 {
assets.srcDirs = ['repo-assets/flavor2']
res.srcDirs = ['repo-res/flavor2']
}
}
如果您注意到flavor1
并flavor3
具有相同的 srcDirsflavor2
和flavor4
.
尝试可能性#1
我试图弄清楚是否有办法通过使用这样的东西来避免冗余:
sourceSets {
flavor1, flavor3 {
assets.srcDirs = ['repo-assets/flavor1']
res.srcDirs = ['repo-res/flavor1']
}
flavor2, flavor4 {
assets.srcDirs = ['repo-assets/flavor2']
res.srcDirs = ['repo-res/flavor2']
}
}
以上不起作用(已经尝试过)。寻找类似的东西,这样我就可sourceDirs
以为一组口味提供一组通用的。任何人都尝试做类似的事情并可以提供一些指示?
尝试可能性#2
sourceSets
需要和口味的名称相同吗?
我可以sourceSets
单独命名然后将它们映射到productFlavors
这样吗?
productFlavors {
flavor1 {
sourceset = "src1"
}
flavor2 {
sourceset = "src2"
}
flavor3 {
sourceset = "src1"
}
flavor4 {
sourceset = "src2"
}
}
sourceSets {
src1 {
}
src2 {
}
}
尝试可能性#3
可以通过任务以某种方式动态分配源集以实现相同的目标吗?
更新
道格拉斯的回答有点帮助我非常接近我最终寻找的东西(减少 build.gradle 中的代码)。他使用了上面的可能性#3。谢谢道格拉斯!赏金猎人的任何更好的选择仍然是受欢迎的(更接近上面的可能性#1和#2)。如果没有任何结果,当我接受他的回答时,道格拉斯已经在这段时间结束时获得了赏金。但仍会对找到更好的选择保持乐观。