每种构建类型的resConfigs

时间:2014-09-09 05:55:03

标签: android gradle

如何覆盖每种构建类型的resConfigs?我读到口味可以允许,但我不会使用它们。我只想为我的调试构建另一组受支持的语言。

以下是我的尝试:

buildTypes {
    debug {
        resConfigs "de", "en" // allow also german in debug builds
    }
    release {
        signingConfig signingConfigs.release
        resConfigs "en"       // english only releases
    }
}

任何简单的想法我怎么能实现这个目标?

2 个答案:

答案 0 :(得分:6)

出于某种原因,单个buildType配置不支持resConfigs命令,但defaultConfig确实如此,然后您可以使用此技巧按照构建类型操作它,即使没有配置风味:

android {
    defaultConfig {
        resConfigs "en"
    }
    applicationVariants.all { variant ->
        if (variant.buildType.name.equals("debug")) {
            variant.mergedFlavor.resourceConfigurations.add("de")
        }
    }
}

答案 1 :(得分:0)

接受的答案对我不起作用。未成功添加de。尽管可以在applicationVariants.all { ... } lambda内执行所有操作:

android {
    defaultConfig {
        // No resConfigs here!
        // resConfigs "en"
    }
    applicationVariants.all { variant ->
        if (variant.buildType.name.equals("debug")) {
            variant.mergedFlavor.resourceConfigurations.add("de")
        } else {
            variant.mergedFlavor.resourceConfigurations.add("en", "de")
        }
    }
}

或使用Kotlinscript:

android {
    defaultConfig {
        // no resConfigs here!
    }
    android.applicationVariants.all {
        val resConfigs = when {
            name.equals("debug") -> listOf("en", "de")
            else -> "en"
        }
        (mergedFlavor as DefaultProductFlavor).addResourceConfigurations(resConfigs)
    }
}