为了加快开发速度,我想做以下事情:
android {
defaultConfig {
resConfigs "en"
}
}
我的应用程序有很多语言,这样做可以节省大量的开发时间。但是,我不想发布这个版本的版本。遗憾的是,resConfigs
在产品风格或构建类型上不可用,因此我无法在debug {}
中设置它。
如何自动从发布变种中自动排除resConfigs
?我不想在我建立时记住注释掉该行代码发布。
答案 0 :(得分:2)
这不会起作用吗?
检测调试版本,重置配置并添加所需的调试配置。
applicationVariants.all { variant ->
if (variant.buildType.name == "debug") {
variant.mergedFlavor.resourceConfigurations.clear()
variant.mergedFlavor.resourceConfigurations.add("en")
}
}
答案 1 :(得分:1)
我的解决方案受到this answer相关问题的启发。以下是您的工作方式:
在 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的一部分。