Android:针对不同的应用程序风格使用不同的字符串

Tho*_*kos 5 string android gradle android-studio

我有一个具有2种不同口味/变体的android应用程序。如何为每种口味设置不同的字符串(例如,应用名称,按钮标签等)?到目前为止,我所做的实际上是有效的,但并非完全符合我的
意愿:我使用gradle创建了两种口味。具体来说,我创建了一个flavor1_res和一个flavor2_res文件夹,并将其中的特定于风味的资源放入其中。
具体来说,我在每个文件夹下都放置了一个strings.xml文件。每个文件包含相同的字符串标签,但字符串的值不同。该应用程序可以从命令行(gradlew assembleFlavor1例如,使用命令行)构建,但是在Android Studio中无法识别我的字符串,并且遇到了所有这些编译错误。
还有另一种方法吗?如何使Android Studio识别两个string.xml文件?(我已经将相应的文件夹添加为源文件夹)。

谢谢托马斯

小智 7

您可以像这样在 build.gradle 文件中声明资源字符串:

productFlavors {
    devel {
        resValue 'string', 'fancy_name', 'Development App'
    }
    prod {
        resValue 'string', 'fancy_name', 'Production App'
    }
}
Run Code Online (Sandbox Code Playgroud)

所以现在根据您正在构建的风格,“fancy_name”字符串将是“Development App”或“Production App”。我经常用这个。

  • 谢谢亚历克西斯的回答!我想当我发布这个问题时,这个功能不可用。再次感谢! (2认同)

Dev*_*avo 3

如果我正确理解这个问题,Android Studio (AS) 无法识别资源文件夹的内容。如果在 build.gradle (app) 中你有以下内容:

productFlavors {
    free {
        applicationIdSuffix ".free"
        versionNameSuffix "-free"
    }
    paid {
        applicationIdSuffix ".paid"
        versionNameSuffix "-paid"
    }
}
Run Code Online (Sandbox Code Playgroud)

AS 中有一个名为“Build Variants”的窗格,可以在其中选择免费或付费。所以如果你点击free,AS就会识别free下的res文件夹是什么。