Android 特定 Gradle 产品风味组合
Android Specific Gradle product flavor combinations
在我的代码中,我有一些模板都来自一个代码库。我想为每个模板添加特定尺寸。使用风味维度和产品风味我得到了这个代码:
flavorDimensions "template", "color"
productFlavors {
templateA {
applicationId "com.templatea"
versionCode 1
versionName "1.0.0"
flavorDimension "template"
}
templateB {
applicationId "com.templateb"
versionCode 1
versionName "1.0.0"
flavorDimension "template"
}
templateC {
applicationId "com.templatec"
versionCode 1
versionName "1.0.0"
flavorDimension "template"
}
blue {
applicationId "com.blue"
versionCode 1
versionName "1.0.0"
flavorDimension "color"
}
green {
applicationId "com.green"
versionCode 1
versionName "1.0.0"
flavorDimension "color"
}
orange {
applicationId "com.orange"
versionCode 1
versionName "1.0.0"
flavorDimension "color"
}
给出结果(我忽略了构建类型):
templateABlue
templateAGreen
templateAOrange
templateBBlue
templateBGreen
templateBOrange templateCBlue
templateCGreen
templateCOrange
当然这是预期的行为,但我想实现这样的目标:
templateA
templateBBlue
templateBOrange
templateC
templateCGreen
因此,每个模板都派生自一个主要代码库,并且每个模板都可以具有从其代码库派生的不同变体。有没有一种方法可以指定可以使用哪些风味维度组合,或者有一种方法可以排除我不想要的组合?需要说明的是,每个模板都可以在不指定颜色的情况下运行。
我希望我的问题很清楚。提前谢谢你。
您可以使用gradle variantFilter
排除一些配置
例如:
productFlavors {
templateB {
applicationId "com.templateb"
versionCode 1
versionName "1.0.0"
flavorDimension "template"
}
templateC {
applicationId "com.templatec"
versionCode 1
versionName "1.0.0"
flavorDimension "template"
}
blue {
applicationId "com.blue"
versionCode 1
versionName "1.0.0"
flavorDimension "color"
}
}
android.variantFilter { variant ->
if(variant.getFlavors().get(0).name.equals('templateC')
&& variant.getFlavors().get(1).name.equals('blue')) {
variant.setIgnore(true);
}
}
在我的代码中,我有一些模板都来自一个代码库。我想为每个模板添加特定尺寸。使用风味维度和产品风味我得到了这个代码:
flavorDimensions "template", "color"
productFlavors {
templateA {
applicationId "com.templatea"
versionCode 1
versionName "1.0.0"
flavorDimension "template"
}
templateB {
applicationId "com.templateb"
versionCode 1
versionName "1.0.0"
flavorDimension "template"
}
templateC {
applicationId "com.templatec"
versionCode 1
versionName "1.0.0"
flavorDimension "template"
}
blue {
applicationId "com.blue"
versionCode 1
versionName "1.0.0"
flavorDimension "color"
}
green {
applicationId "com.green"
versionCode 1
versionName "1.0.0"
flavorDimension "color"
}
orange {
applicationId "com.orange"
versionCode 1
versionName "1.0.0"
flavorDimension "color"
}
给出结果(我忽略了构建类型):
templateABlue
templateAGreen
templateAOrange
templateBBlue templateBGreen
templateBOrange templateCBlue
templateCGreen
templateCOrange
当然这是预期的行为,但我想实现这样的目标:
templateA
templateBBlue
templateBOrange
templateC
templateCGreen
因此,每个模板都派生自一个主要代码库,并且每个模板都可以具有从其代码库派生的不同变体。有没有一种方法可以指定可以使用哪些风味维度组合,或者有一种方法可以排除我不想要的组合?需要说明的是,每个模板都可以在不指定颜色的情况下运行。
我希望我的问题很清楚。提前谢谢你。
您可以使用gradle variantFilter
排除一些配置
例如:
productFlavors {
templateB {
applicationId "com.templateb"
versionCode 1
versionName "1.0.0"
flavorDimension "template"
}
templateC {
applicationId "com.templatec"
versionCode 1
versionName "1.0.0"
flavorDimension "template"
}
blue {
applicationId "com.blue"
versionCode 1
versionName "1.0.0"
flavorDimension "color"
}
}
android.variantFilter { variant ->
if(variant.getFlavors().get(0).name.equals('templateC')
&& variant.getFlavors().get(1).name.equals('blue')) {
variant.setIgnore(true);
}
}