10

我想根据 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>

但我在外面看不到这样的东西。这可能吗?

4

4 回答 4

13

可以通过您的 build.gradle 文件

buildTypes {
    release {
        resValue "string", "my_string", "some release value"
    }
    debug {
        resValue "string", "my_string", "some debug value"
    }
}

然后你可以@string/my_string在你想要的地方使用这个值

于 2016-12-16T15:19:51.143 回答
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
    }
}

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

应该是这样的:

src/
    main/
        java/ -- all your java code
        res/
            ...
            values/
                strings.xml
    debug/
        res/
            ...
            values/
                strings.xml

编辑:其他两个答案的方法也可以正常工作。但是如果你有很多字符串将它们保存为 xml 可能更容易处理。

于 2016-12-16T15:20:43.970 回答
3
resValue 'string', '<string_name>', "some string"

在 build.gradle 中为不同的构建变体/产品风格定义不同的

于 2016-12-16T15:12:58.240 回答
2

您可以直接从Android Studio执行此操作。例如,如果您需要为“staging”风格使用不同的应用名称,您可以(Android Studio v3.5):

  • 右键单击值文件夹 -> 新建 -> 值资源文件
  • 在源集菜单中选择“暂存”
  • 指定 strings.xml 作为文件名

此时,Android Studio 会strings.xml为您的特定构建变体生成一个附加文件。使用您的“暂存”应用程序名称编辑创建的文件(例如 MyAppName - Staging)

strings.xml - 暂存 strings.xml - 生产

构建.gradle(应用程序)

productFlavors {
        stage {
            applicationIdSuffix ".staging"
            buildConfigField 'String', 'SITE_URL', '"[staging_link_here]"'
        }
        prod {
            buildConfigField 'String', 'SITE_URL', '"[production_link_here]"'
        }
 }
于 2019-09-20T09:47:25.053 回答