Gradle 风味基于其他风味
Gradle flavor based on other flavor
一种风味是否可能基于另一种风味?
例如
build.gradle:
productFlavors {
flavor1 {
flavorBase "main"
}
flavor2 {
flavorBase "main"
}
flavor3 {
flavorBase "main"
}
flavor4 {
flavorBase "flavor3"
}
flavor5 {
flavorBase "flavor3"
}
}
您可以使用风味维度对特征进行分组。例如:
flavorDimensions "color", "function", "data"
productFlavors {
color1 {
flavorDimension "color"
// Something
}
color2 {
flavorDimension "color"
// Something else
}
functions1 {
flavorDimension "function"
// Something
}
functions2 {
flavorDimension "function"
// Something else
}
data1 {
flavorDimension "data"
// Something
}
data2 {
flavorDimension "data"
// Something else
}
}
然后您可以像这样使用这些维度分解您的代码:
Color1Function2Data1 或 Color2Function1Data1...
我 运行 遇到了同样的问题,需要像基本风味和从中继承的两种风味。
经过几个小时的大量尝试后,我得出的最佳解决方案是:
- 创建您的其他口味(口味 4 和 5),与您为 1 和 2 所做的相同。
- 为这些创建文件夹并为通用 code/ressources 创建一个基本文件夹(例如,命名为 flavor 3;与为其他 flavor 所做的方式相同)。
现在为您的子版本定义额外的源集
flavor4 {
res.srcDirs = ['src/flavor3/res', 'src/flavor4/res']
java.srcDirs = ['src/flavor3/java', 'src/flavor4/java']
resources.srcDirs = ['src/flavor3/java', 'src/flavor4/java']
}
flavor5 {
res.srcDirs = ['src/flavor3/res', 'src/flavor5/res']
java.srcDirs = ['src/flavor3/java', 'src/flavor5/java']
resources.srcDirs = ['src/flavor3/java', 'src/flavor5/java']
}
因此,在 flavor3(从这个意义上讲,这不是一种风格,但我保留原样命名)中,您可以定义通用代码和资源。
唯一的缺点是,它不可能在基本文件夹和子文件夹中具有相同的 class。
一种风味是否可能基于另一种风味?
例如 build.gradle:
productFlavors {
flavor1 {
flavorBase "main"
}
flavor2 {
flavorBase "main"
}
flavor3 {
flavorBase "main"
}
flavor4 {
flavorBase "flavor3"
}
flavor5 {
flavorBase "flavor3"
}
}
您可以使用风味维度对特征进行分组。例如:
flavorDimensions "color", "function", "data"
productFlavors {
color1 {
flavorDimension "color"
// Something
}
color2 {
flavorDimension "color"
// Something else
}
functions1 {
flavorDimension "function"
// Something
}
functions2 {
flavorDimension "function"
// Something else
}
data1 {
flavorDimension "data"
// Something
}
data2 {
flavorDimension "data"
// Something else
}
}
然后您可以像这样使用这些维度分解您的代码: Color1Function2Data1 或 Color2Function1Data1...
我 运行 遇到了同样的问题,需要像基本风味和从中继承的两种风味。
经过几个小时的大量尝试后,我得出的最佳解决方案是:
- 创建您的其他口味(口味 4 和 5),与您为 1 和 2 所做的相同。
- 为这些创建文件夹并为通用 code/ressources 创建一个基本文件夹(例如,命名为 flavor 3;与为其他 flavor 所做的方式相同)。
现在为您的子版本定义额外的源集
flavor4 { res.srcDirs = ['src/flavor3/res', 'src/flavor4/res'] java.srcDirs = ['src/flavor3/java', 'src/flavor4/java'] resources.srcDirs = ['src/flavor3/java', 'src/flavor4/java'] } flavor5 { res.srcDirs = ['src/flavor3/res', 'src/flavor5/res'] java.srcDirs = ['src/flavor3/java', 'src/flavor5/java'] resources.srcDirs = ['src/flavor3/java', 'src/flavor5/java'] }
因此,在 flavor3(从这个意义上讲,这不是一种风格,但我保留原样命名)中,您可以定义通用代码和资源。 唯一的缺点是,它不可能在基本文件夹和子文件夹中具有相同的 class。