Android:如何重置版本变量的resConfigs?

时间:2017-02-15 20:15:57

标签: android gradle android-build-type

为了加快开发速度,我想做以下事情:

android {
    defaultConfig {
        resConfigs "en"
    }
}

我的应用程序有很多语言,这样做可以节省大量的开发时间。但是,我不想发布这个版本的版本。遗憾的是,resConfigs在产品风格或构建类型上不可用,因此我无法在debug {}中设置它。

如何自动从发布变种中自动排除resConfigs我不想在我建立时记住注释掉该行代码发布。

2 个答案:

答案 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
        }
    }
}

这是有效的,因为mResourceConfigurationresConfigs的支持字段。不幸的是,Android Gradle DSL目前没有公开重置resConfigs的方法,因此我们不得不使用groovy @<fieldName>语法直接访问该字段。这是有效的,即使mResourceConfiguration是私有的。

警告:此解决方案有点脆弱,因为Android Gradle构建工具团队可以随时更改该字段的名称,因为它不是公共API的一部分。