问题描述
为了使开发更快,我想要执行以下操作:
android {
defaultConfig {
resConfigs "en"
}
}
我的应用程序具有多种语言,这样做可以节省大量开发时间。
但是,我不想发布带有此设置的版本。
不幸的是, resConfigs
在产品版本或内部版本上不可用,例如,我无法在debug {}
中进行设置。
如何自动从发行版本中排除resConfigs
?
在构建发行版时,我不想记住该行代码。
1楼
这行不行吗?
检测调试版本,重置配置并添加所需的调试配置。
applicationVariants.all { variant ->
if (variant.buildType.name == "debug") {
variant.mergedFlavor.resourceConfigurations.clear()
variant.mergedFlavor.resourceConfigurations.add("en")
}
}
2楼
我的解决方案的灵感来自于到一个相关的问题。 这是您的操作方式:
在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当前未提供重置resConfigs
的方法,因此我们被迫使用groovy @<fieldName>
语法直接访问该字段。
即使mResourceConfiguration
是私有的,此方法也有效。
警告 :此解决方案有点脆弱,因为Android Gradle构建工具团队可以随时更改该字段的名称,因为它不是公共API的一部分。