当前位置: 代码迷 >> Android >> Android:如何为发行版本重置resConfigs?
  详细解决方案

Android:如何为发行版本重置resConfigs?

热度:43   发布时间:2023-08-04 11:55:33.0

为了使开发更快,我想要执行以下操作:

android {
    defaultConfig {
        resConfigs "en"
    }
}

我的应用程序具有多种语言,这样做可以节省大量开发时间。 但是,我不想发布带有此设置的版本。 不幸的是, resConfigs在产品版本或内部版本上不可用,例如,我无法在debug {}中进行设置。

如何自动从发行版本中排除resConfigs 在构建发行版时,我不想记住该行代码。

这行不行吗?

检测调试版本,重置配置并添加所需的调试配置。

applicationVariants.all { variant ->
    if (variant.buildType.name == "debug") {   
        variant.mergedFlavor.resourceConfigurations.clear()
        variant.mergedFlavor.resourceConfigurations.add("en")
    }
}

我的解决方案的灵感来自于到一个相关的问题。 这是您的操作方式:

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的一部分。

  相关解决方案