Android特定的Gradle产品风味组合

在我的代码中,我有一些从一个代码库派生的模板。 对于每个模板,我想添加特定的尺寸。 使用风味尺寸和产品口味我已经达到了这个代码:

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" } 

哪个给出了结果(我忽略了构buildtypes):

templateABlue

templateAGreen

templateAOrange

templateBBlue templateBGreen

templateBOrange templateCBlue

templateCGreen

templateCOrange

当然这是预期的行为,但我想实现这样的事情:

templateA

templateBBlue

templateBOrange

templateC

templateCGreen

因此,每个模板都来自一个主代码库,每个模板可以有不同的变体派生自他们的代码库。 有没有办法指定哪些味道维度组合可以使用或排除我不想要的组合? 要清楚的是,每个模板都可以在没有指定颜色的情况下运行。

我希望我的问题很清楚。 先谢谢你。

Solutions Collecting From Web of "Android特定的Gradle产品风味组合"

你可以使用gradle variantFilter来排除一些configuration

例如:

 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); } }