gpt4 book ai didi

android - 从string.xml获取app_name以获取Gradle中的当前产品 flavor

转载 作者:行者123 更新时间:2023-12-03 03:29:24 28 4
gpt4 key购买 nike

在我的应用中,我有很多不同的产品口味,实际上是10种。
对于其他语言,它们的完成方式类似于:eng_testDebug,eng_prodDebug,eng_testRelease,eng_prodRelease等。

因此,现在我有一个任务,要在应用名称中添加“-Test”以在构建名称中使用test进行构建。

现在,我找到了一种从主sourceSet解析string.xml并使用gradle文件中的manifestPlaceHolders构建我的应用程序名称的解决方案。但这仅适用于主要口味。
这是获取我正在使用的默认strings.xml app_name的代码:

def getAppName() {
def stringsFile = android.sourceSets.main.res.sourceFiles.find { it.name.equals 'strings.xml' }
String s = new XmlParser().parse(stringsFile).string.find { it.@name.equals 'app_name' }.text();
return s.replaceAll("\"", "");
}

在这里,我对其进行修改以添加“测试”:
def getEditedAppName() {
if (getCurrentFlavor().contains("test")) {
return getAppName() + "(Test)";
} else {
return getAppName();
}
}

getCurrentFlavor()向我返回了:assemble任务中使用的 flavor 名称。

基本上,问题是如何根据我当前的建筑风格如何获取其他sourceSet文件,以便可以解析f​​lavor的app_name?

不幸的是,对于gradle文件中的每种口味而言,否决app_name字符串对我而言不是有效的选择。

最佳答案

对于每种口味,您都可以在src文件夹中创建一个类似于该口味的文件夹。在那您还应该看到您的主文件夹。在这些 flavor 文件夹中,您可以创建res文件夹并覆盖或添加其他资源文件。
在这里,您可以创建strings.xml并更改应用程序名称以及可绘制对象等。

http://ptrprograms.blogspot.de/2014/08/build-variations-using-gradle-and.html

根据评论进行编辑:

我有以下两种口味:

productFlavors {
appFlavorA{
applicationId "de.test.appaA"
}
appFlavorB{
applicationId "de.test.appaB"
}
}

现在,我得到了strings.xml的以下结构
ProjctRoot/app/src/main/res/values/strings.xml
ProjctRoot/app/src/appFlavorA/res/values/strings.xml
ProjctRoot/app/src/appFlavorB/res/values/strings.xml

这将导致为flavorflavor使用相应的strings.xml

关于android - 从string.xml获取app_name以获取Gradle中的当前产品 flavor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41742241/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com