【发布时间】:2014-10-28 15:39:05
【问题描述】:
我有一个相对复杂的项目,每个应用都需要两个风味维度。我在下面的示例中更简单地重写了它:
flavorDimensions "shape", "color"
productFlavors {
blue {
flavorDimension "color"
}
red {
flavorDimension "color"
}
green {
flavorDimension "color"
}
square {
flavorDimension "shape"
}
circle {
flavorDimension "shape"
}
我希望能够为每个变体设置不同的 applicationId,例如:squareblue 将具有与 circleblue 不同的 applicationId。我无法在颜色维度中设置 applicationId,因为它对于每个形状都是相同的。在上面的示例中,我需要有 6 个不同的 applicationId。这些 Id 也不遵循任何模式,它们可以是任何东西。
我在这里看到了答案:How to set different applicationId for each flavor combination using flavorDimensions?,但这意味着我需要手动设置它,这对我的项目来说是不可行的,因为变体的数量(1000s)。
我真正想做的是在颜色维度上设置两个 applicationid,然后在构建时根据形状维度选择正确的一个。我尝试定义变量,但没有成功,它们只是被最后一个变体覆盖。
【问题讨论】:
-
您的构建文件是用图灵完备的语言编写的,因此您有潜力做很多事情。你不能在你链接到的那个问题的代码上构建并添加你自己的逻辑来生成应用程序 ID 吗?
-
ApplicationID 已经存在并且可以是任何东西,因此没有逻辑的方式来创建它们。我可以在 variantFilter 中添加每一个,但这需要在我的 gradle 文件中添加数千行额外的行以检查每个变体。
-
如果没有合乎逻辑的方法来创建它们,我不确定有什么合理的替代方案——你必须在某个地方对它们进行硬编码。您也许可以将它们保存在 CSV 文本文件中并在构建文件中编写代码以将其读入地图并应用它。
-
啊,是的,我知道我必须对它们进行硬编码,我想要将它添加到 productFlavor 中。所以我会有类似 applicationIdSquare 和 applicationIdCircle 的东西,它会根据其他风味维度选择正确的。
标签: android groovy gradle android-studio