我的应用程序中有不同的构建类型和不同的风味维度。我想仅针对一种特定的构建类型向应用程序 ID 添加特定的风格后缀。
例如对于
stageApi
风味和 beta
构建类型组合,我想添加后缀 .stageapi
和 .beta
,因此结果应用程序 ID 将为 my.application.stageapi.beta
,但对于 debug
和 release
我不这样做我想要这样做(我想要 my.application.debug
和 my.application
没有 api 后缀)。
我以前有过这段代码,它运行得很好:
productFlavors {
...
beta {
applicationIdSuffix ".beta"
}
}
applicationVariants.all { variant ->
def name = variant.getName()
if (name.contains("StageApiBeta")) {
def mergedFlavor = variant.mergedFlavor
mergedFlavor.setApplicationIdSuffix(".stageapi")
}
}
但是升级到 Gradle 插件 4.1 后它停止工作。它不会抛出任何错误,但生成的应用程序 ID 是
my.application.beta
,没有 .stageapi
。
我尝试了不同的方法,但我现在不知道该怎么做。我似乎 4.2 也会有其他 API 更改,但我想让它也能在 4.1 中工作。
使用
flavorDimensions
并为您的变体设置不同的后缀。
flavorDimensions "dimen1" "dimen2"
productFlavors {
beta {
applicationIdSuffix ".beta"
dimension "dimen1"
}
stageapi {
applicationIdSuffix ".stageapi"
dimension "dimen2"
}
}
使用 Gradle Plugin 8.5.1,我通过简单地将
versionNameSuffix="<suffix>"
添加到 buildType 子句中,成功地组合了风味和 buildType 相关的版本名称后缀,如下例所示(我使用 Kotlin 作为 Gradle 脚本语言):
buildTypes {
getByName("release") {
...
}
getByName("debug") {
...
versionNameSuffix = "-DEBUG"
}
}
...
productFlavors {
create("staging") {
...
versionNameSuffix = "-STG"
}
对于
stagingDebug
构建变体,我得到了 -STG-DEBUG
后缀。