Android Gradle resValue导致字符串资源重复
我的Android清单文件定义应用程序名称,如下所示:Android Gradle resValue导致字符串资源重复,android,android-gradle-plugin,Android,Android Gradle Plugin,我的Android清单文件定义应用程序名称,如下所示: android:label="@string/app_name" buildTypes { beta { applicationIdSuffix ".beta" debuggable true resValue "string", "app_name", "MyTest Beta" } } res/values/strings.xml中存在app_name的对应条目 现在
android:label="@string/app_name"
buildTypes {
beta {
applicationIdSuffix ".beta"
debuggable true
resValue "string", "app_name", "MyTest Beta"
}
}
res/values/strings.xml中存在app_name的对应条目
现在,在我的build.gradle中,我重新定义了beta版的应用程序名称,如下所示:
android:label="@string/app_name"
buildTypes {
beta {
applicationIdSuffix ".beta"
debuggable true
resValue "string", "app_name", "MyTest Beta"
}
}
然而,当我组装包时,Gradle抱怨说有重复的字符串资源
我可以简单地从string.xml中删除app_name标记。但是,在这种情况下,AndroidStudio报告清单文件存在问题
我该如何解决这个问题?注意。不应该弄乱“resValue”。您可以使用调试源集,这将允许您在调试中重新定义其他字符串。创建以下文件并在其中重新定义“app_name”字符串
src/debug/res/values/strings.xml
只需确保您的构建中没有类似于以下内容的内容
debug.setRoot('build-types/debug')
我也遇到了同样的问题。 我的解决方案是使用
清单占位符
<application
android:label="${APP_NAME}"
tools:replace="android:label">
改变你口味中的价值
buildTypes {
beta {
applicationIdSuffix ".beta"
debuggable true
addManifestPlaceholders([APP_NAME: "MyTest Beta"])
}
}
缺点:
- flavor中的硬编码appName。(可能是交易,也可能不是交易)
要解决这个缺点,您可以将
Manifest placeholder
和resValue
组合起来,这将创建一个资源使用resValue
,并将android:label
更改为您的资源。您尝试过“别名”吗<代码>@string/app\u name\u alias在xml中,以及resValue“string”、“app\u name\u alias”、“MyTest Beta”
在gradle中(android studio将在参考资料中显示“错误”,但这至少应该编译工具的重要性:replace=“android:label”?