我的Android清单文件定义了应用名称,如下所示:
android:label="@string/app_name"
app_name的相应条目存在于res / values / strings.xml
中现在,在我的build.gradle中,我重新定义了beta版本的应用程序名称,如下所示:
buildTypes {
beta {
applicationIdSuffix ".beta"
debuggable true
resValue "string", "app_name", "MyTest Beta"
}
}
但是,当我组装包时,Gradle会抱怨重复的字符串资源。
我可以简单地从string.xml中删除app_name标记。但是,在这种情况下,Android Studio会报告清单文件存在问题。
我该如何解决这个问题?问候。
答案 0 :(得分:7)
不应该混淆一个resValue。'您可以使用调试源集,它允许您在调试中重新定义其他字符串。创建以下文件并重新定义' app_name'那里的字符串。
src/debug/res/values/strings.xml
请确保您在build.gradle的sourceSets中没有以下任何内容
debug.setRoot('build-types/debug')
答案 1 :(得分:5)
我也遇到过同样的问题。
我的解决方案是使用Manifest-placeholder
。
<application
android:label="${APP_NAME}"
tools:replace="android:label">
在defaultConfig
关闭中,设置值
defaultConfig {
addManifestPlaceholders([APP_NAME: "@string/app_name"])
}
并改变你的口味中的价值。
buildTypes {
beta {
applicationIdSuffix ".beta"
debuggable true
addManifestPlaceholders([APP_NAME: "MyTest Beta"])
}
}
缺点:
要解决这个问题,您可以合并Manifest-placeholder
和resValue
,即创建资源使用resValue
并将android:label
更改为您的资源。