gpt4 book ai didi

Android 特定的 Gradle 产品 flavor 组合

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:35:55 25 4
gpt4 key购买 nike

在我的代码中,我有一些模板都来自一个代码库。我想为每个模板添加特定尺寸。使用 flavor 维度和产品 flavor 我得到了这个代码:

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

因此,每个模板都派生自一个主要代码库,并且每个模板都可以具有从其代码库派生的不同变体。有没有一种方法可以指定可以使用哪些 flavor 维度组合,或者有一种方法可以排除我不想要的组合?需要说明的是,每个模板都可以在不指定颜色的情况下运行。

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

最佳答案

你可以使用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);
}
}

关于Android 特定的 Gradle 产品 flavor 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28341273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com