6

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

谢谢,托马斯

4

3 回答 3

7

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

productFlavors {
    devel {
        resValue 'string', 'fancy_name', 'Development App'
    }
    prod {
        resValue 'string', 'fancy_name', 'Production App'
    }
}

因此,现在根据您正在构建的风格,“fancy_name”字符串将是“开发应用程序”或“生产应用程序”。我经常用这个。

于 2018-04-25T15:23:25.623 回答
2

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

productFlavors {
    free {
        applicationIdSuffix ".free"
        versionNameSuffix "-free"
    }
    paid {
        applicationIdSuffix ".paid"
        versionNameSuffix "-paid"
    }
}

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

于 2017-03-12T09:44:22.630 回答
0

好吧,这真的很旧,但无论如何我都会试一试。我认为您可以在定义每个字符串值的主文件夹中放置一个 strings.xml。它们可以为空:

<string name="myAwesomeString1"></string>

然后 Android Studio 知道该字符串存在,并且当您构建它时,它将从风味文件中获取值。

于 2014-03-14T20:15:38.317 回答