为了加快开发速度,我想做以下事情:
android {
defaultConfig {
resConfigs "en"
}
}
我的应用程序有很多语言,这样做可以在开发过程中节省大量时间。但是,我不想发布带有这个集合的版本。不幸的是,resConfigs
在产品风味或构建类型上不可用,因此我无法将其设置debug {}
为 .
如何自动resConfigs
从发布变体中排除?当我为发布而构建时,我不想记住注释掉那行代码。
为了加快开发速度,我想做以下事情:
android {
defaultConfig {
resConfigs "en"
}
}
我的应用程序有很多语言,这样做可以在开发过程中节省大量时间。但是,我不想发布带有这个集合的版本。不幸的是,resConfigs
在产品风味或构建类型上不可用,因此我无法将其设置debug {}
为 .
如何自动resConfigs
从发布变体中排除?当我为发布而构建时,我不想记住注释掉那行代码。
我的解决方案是受到这个对相关问题的回答的启发。这是你如何做到的:
在app/build.gradle
// Reset `resConfigs` for release
afterEvaluate {
android.applicationVariants.all { variant ->
if (variant.buildType.name.equals('release')) {
variant.mergedFlavor.@mResourceConfiguration = null
}
}
}
这是有效mResourceConfiguration
的,因为它是resConfigs
. 不幸的是,Android Gradle DSL 目前没有公开 reset 的方法resConfigs
,所以我们不得不使用 groovy@<fieldName>
语法直接访问该字段。这有效,即使mResourceConfiguration
是私人的。
警告:这个解决方案有点脆弱,因为 Android Gradle 构建工具团队可以随时更改该字段的名称,因为它不是公共 API 的一部分。
这不行吗?
检测调试版本,重置配置并添加所需的调试配置。
applicationVariants.all { variant ->
if (variant.buildType.name == "debug") {
variant.mergedFlavor.resourceConfigurations.clear()
variant.mergedFlavor.resourceConfigurations.add("en")
}
}