多渠道先要分析需求,然后按功能划分成几个维度.举个例子,我们要打的包特供"好女人"和"坏男人",我们的需求就可以分成两个维度,"性别"和"品性"
先定义这两个维度
android{
defaultConfig {
flavorDimensions "性别","品性"
}
}
然后我们配置productFlavors,
android{
productFlavors{
好 {
dimension '品性'
}
坏{
dimension '品性'
}
男人{
dimension '性别'
}
女人{
dimension '性别'
}
}
}
由于我们只需要好女人和坏男人两个版本,所以需要把好男人和坏女人过滤掉
android{
defaultConfig{
flavorDimensions "品性","性别"
}
productFlavors{
好 {
dimension '品性'
}
坏{
dimension '品性'
}
男人{
dimension '性别'
}
女人{
dimension '性别'
}
}
variantFilter{
def names = it.flavors*.name
if(names.contains("男人") && names.contains("好")){
setIgnore(true)
}
if(names.contains("女人") && names.contains("坏")){
setIgnore(true)
}
}
}
然后,我们坏男人专用版本只供测试,不对外分部,也就是说不需要release版本
android{
defaultConfig{
flavorDimensions "品性","性别"
}
productFlavors{
好 {
dimension '品性'
}
坏{
dimension '品性'
}
男人{
dimension '性别'
}
女人{
dimension '性别'
}
}
variantFilter{
def names = it.flavors*.name
if(names.contains("男人") && names.contains("好")){
setIgnore(true)
}
if(names.contains("女人") && names.contains("坏")){
setIgnore(true)
}
if(names.contains("男人")&&names.contains("坏") && it.buildType.name=='release'){
setIgnore(true)
}
}
}
坏有部分特殊的代码,另外放置,女人也有部分代码和资源放置到其它目录
android{
defaultConfig{
flavorDimensions "品性","性别"
}
productFlavors{
好 {
dimension '品性'
}
坏{
dimension '品性'
}
男人{
dimension '性别'
}
女人{
dimension '性别'
}
}
variantFilter{
def names = it.flavors*.name
if(names.contains("男人") && names.contains("好")){
setIgnore(true)
}
if(names.contains("女人") && names.contains("坏")){
setIgnore(true)
}
if(names.contains("男人")&&names.contains("坏") && it.buildType.name=='release'){
setIgnore(true)
}
}
sourceSets{
main{...}
坏{...}
女人{...}
}
}