android - 在 Gradle 4.1 中为特定的 flavor-buildType 组合设置 applicationIdSuffix
问题描述
我的应用程序中有不同的构建类型和不同的风味维度。我只想为一种特定的构建类型向应用程序 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"
}
}
推荐阅读
- c++ - 使用友元函数从多态类中检索类型信息?
- python - 当使用 pandas 读取 csv 文件时,它会为 /: 'module' 和 'str' 输出不受支持的操作数类型
- angular - 从Angular 7中的嵌套json动态生成表
- c# - 子密码方法上的 IndexOutofRange 异常
- javascript - 当服务器接收到数据时,我正在尝试使用 Angular 6 丢弃引导模式
- html - HTML5
- java - JTextPane 和撤消管理器样式更改
- d3.js - d3.js 绘图未显示在 R Shiny 绘图区域内
- oracle - oracle jdbc 驱动程序报告具有主键的表上没有主键列
- javascript - 如何使用 for 循环来控制台记录数组的每个项目?