Android studio gradle 风味维度构建变体无法正常工作
Android studio gradle flavor dimensions build varients not working correctly
我有一个应用程序的两个维度,然后调用绿色和蓝色。将只有这两个维度,但产品口味是无限的。这是我在 gradle
中设置的方式
flavorDimensions "green", "blue"
productFlavors {
one {
applicationId "com.app.green.one"
versionCode 1
versionName "1.0.0.1";
flavorDimension = "green"
}
two {
applicationId "com.app.blue.two"
versionCode 6
versionName "1.0.1";
flavorDimension = "blue"
}
}
但是在我同步 gradle 之后,在构建变体选项卡中我只看到 oneTwoDebug 和 oneTwoRelease,我应该在其中看到 greenOneDebug greenOneRelease、blueTwoDebug、blueTwoRelease
理论上我想把它扩展成这样
one {
applicationId "com.app.green.one"
versionCode 1
versionName "1.0.0.1";
flavorDimension = "green"
}
two {
applicationId "com.app.blue.two"
versionCode 6
versionName "1.0.1";
flavorDimension = "blue"
}
three {
applicationId "com.app.green.three"
versionCode 1
versionName "1.0.0.1";
flavorDimension = "green"
}
four {
applicationId "com.app.blue.four"
versionCode 6
versionName "1.0.1";
flavorDimension = "blue"
}
这里的维度代表了app的"type",然后flavors更多的是可以添加的组织。
**编辑我对 gradle 的设置有误,因为这里指出的是对我所拥有内容的更准确描述
flavorDimensions "type", "organization"
productFlavors {
blue {
applicationId "com.app.blue"
flavorDimension = "type"
versionCode 6
versionName "1.0.1";
}
red {
applicationId "com.app.red"
flavorDimension = "type"
versionCode 1
versionName "1.0.0.1";
}
company1 {
flavorDimension = "organization"
}
company2 {
flavorDimension = "organization"
}
}
到目前为止这是有效的,所以我可以为切换类型创建 java 源目录,但是如果我想要特定于组织的配置文件怎么办,我是否也为每个组织创建 java 源目录?
我认为您误解了 flavorDimension 的概念。
flavorDimension 类似于 flavor category,每个维度的 flavor 的每种组合都会产生一个变体。
在您的情况下,您必须定义一个名为 "type" 的 flavorDimension 和另一个名为 "organization" 的维度。
它将为维度 "organization" 中的每种口味生成所有可能的 "type" (或双重公式:对于每个 "type" 它将为每个组织生成一个变体)。
风味维度定义了将用于生成变体的笛卡尔积。
编辑 :我会尝试用伪gradle代码来说明:
让我们定义一些 "type" : bronze, silver and gold
让我们定义一些组织:customerA、customerB、customerC
所有这些都是 productFlavors,但它们属于 2 个不同的维度:
flavorDimensions("type_line", "organization")
productFlavors {
gold {
...
dimension = "type_line"
}
silver {
...
dimension = "type_line"
}
bronze {
...
dimension = "type_line"
}
customerA {
...
dimension = "organization"
}
customerB {
...
dimension = "organization"
}
customerC {
...
dimension = "organization"
}
}
此配置将产生 18 (3*3*2) 个变体(如果您有 2 种标准构建类型:调试和发布):
黄金客户A调试;黄金客户A发布;黄金客户 B 调试;黄金客户B-发布;黄金客户C-调试; gold-customerC-release ;
银客户A调试;白银客户A发布;银客户 B 调试;白银客户B-发布;银客户C-调试;银客户C-发布;
...(青铜同理)
请注意,维度的名称完全是任意的,对变体名称没有影响。
风味维度非常强大,但如果使用过多:它会导致变体数量呈指数级增长(post 构建清理任务可能有助于删除无用的或无义变体)
我有一个应用程序的两个维度,然后调用绿色和蓝色。将只有这两个维度,但产品口味是无限的。这是我在 gradle
中设置的方式flavorDimensions "green", "blue"
productFlavors {
one {
applicationId "com.app.green.one"
versionCode 1
versionName "1.0.0.1";
flavorDimension = "green"
}
two {
applicationId "com.app.blue.two"
versionCode 6
versionName "1.0.1";
flavorDimension = "blue"
}
}
但是在我同步 gradle 之后,在构建变体选项卡中我只看到 oneTwoDebug 和 oneTwoRelease,我应该在其中看到 greenOneDebug greenOneRelease、blueTwoDebug、blueTwoRelease
理论上我想把它扩展成这样
one {
applicationId "com.app.green.one"
versionCode 1
versionName "1.0.0.1";
flavorDimension = "green"
}
two {
applicationId "com.app.blue.two"
versionCode 6
versionName "1.0.1";
flavorDimension = "blue"
}
three {
applicationId "com.app.green.three"
versionCode 1
versionName "1.0.0.1";
flavorDimension = "green"
}
four {
applicationId "com.app.blue.four"
versionCode 6
versionName "1.0.1";
flavorDimension = "blue"
}
这里的维度代表了app的"type",然后flavors更多的是可以添加的组织。
**编辑我对 gradle 的设置有误,因为这里指出的是对我所拥有内容的更准确描述
flavorDimensions "type", "organization"
productFlavors {
blue {
applicationId "com.app.blue"
flavorDimension = "type"
versionCode 6
versionName "1.0.1";
}
red {
applicationId "com.app.red"
flavorDimension = "type"
versionCode 1
versionName "1.0.0.1";
}
company1 {
flavorDimension = "organization"
}
company2 {
flavorDimension = "organization"
}
}
到目前为止这是有效的,所以我可以为切换类型创建 java 源目录,但是如果我想要特定于组织的配置文件怎么办,我是否也为每个组织创建 java 源目录?
我认为您误解了 flavorDimension 的概念。
flavorDimension 类似于 flavor category,每个维度的 flavor 的每种组合都会产生一个变体。
在您的情况下,您必须定义一个名为 "type" 的 flavorDimension 和另一个名为 "organization" 的维度。 它将为维度 "organization" 中的每种口味生成所有可能的 "type" (或双重公式:对于每个 "type" 它将为每个组织生成一个变体)。
风味维度定义了将用于生成变体的笛卡尔积。
编辑 :我会尝试用伪gradle代码来说明:
让我们定义一些 "type" : bronze, silver and gold
让我们定义一些组织:customerA、customerB、customerC
所有这些都是 productFlavors,但它们属于 2 个不同的维度:
flavorDimensions("type_line", "organization")
productFlavors {
gold {
...
dimension = "type_line"
}
silver {
...
dimension = "type_line"
}
bronze {
...
dimension = "type_line"
}
customerA {
...
dimension = "organization"
}
customerB {
...
dimension = "organization"
}
customerC {
...
dimension = "organization"
}
}
此配置将产生 18 (3*3*2) 个变体(如果您有 2 种标准构建类型:调试和发布):
黄金客户A调试;黄金客户A发布;黄金客户 B 调试;黄金客户B-发布;黄金客户C-调试; gold-customerC-release ;
银客户A调试;白银客户A发布;银客户 B 调试;白银客户B-发布;银客户C-调试;银客户C-发布;
...(青铜同理)
请注意,维度的名称完全是任意的,对变体名称没有影响。
风味维度非常强大,但如果使用过多:它会导致变体数量呈指数级增长(post 构建清理任务可能有助于删除无用的或无义变体)