string.xml值随Build Variant而变化

Al *_*ath 4 android

我想根据Build Variant/buildType为string.xml中的字符串赋值不同的值.我想象这样的事情:

res/values-debug/string.xml
    <string name="my_string">some debug value</string>

res/values-release/string.xml
    <string name="my_string">some release value</string>
Run Code Online (Sandbox Code Playgroud)

但我没有看到这样的东西.这可能吗?

Vol*_*myr 6

它可以通过你的build.gradle文件

buildTypes {
    release {
        resValue "string", "my_string", "some release value"
    }
    debug {
        resValue "string", "my_string", "some debug value"
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以像@string/my_string你想要的那样使用这个值


jus*_*ser 5

是的,这是可能的!

在您的 build.gradle 中,您可以添加如下内容:

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        signingConfig signingConfigs.release
    }
    debug {
        applicationIdSuffix ".debug"
        minifyEnabled false
        debuggable true
        signingConfig signingConfigs.release
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在您src项目的文件夹中,您应该有一个名为 main 的文件夹,在它旁边添加一个名为debug. 只要您正在构建调试风格,调试文件夹中的任何资源都将替换 main 中的资源,即发布文件夹。

应该是这样的:

src/
    main/
        java/ -- all your java code
        res/
            ...
            values/
                strings.xml
    debug/
        res/
            ...
            values/
                strings.xml
Run Code Online (Sandbox Code Playgroud)

编辑:来自其他两个答案的方法也很好用。但是如果你有很多字符串,将它们保存为 xml 可能更容易处理。