Gradle resValue 导致字符串资源重复
Gradle resValue causes duplicate string resources
我的 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"
}
}
但是,当我 assemble 包时,Gradle 抱怨重复的字符串资源。
我可以简单地从 string.xml 中删除 app_name 标记。但是,在这种情况下,Android Studio 会报告清单文件存在问题。
我该如何解决这个问题?问候。
不必弄乱 'resValue.' 您可以使用调试源集,它也允许您在调试中重新定义其他字符串。创建以下文件并在其中重新定义 'app_name' 字符串。
src/debug/res/values/strings.xml
只需确保您的 build.gradle 的 sourceSets
中没有类似以下的内容
debug.setRoot('build-types/debug')
我也遇到了同样的问题。
我的解决方案是使用 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"])
}
}
缺点:
- HardCode appName 风格。 (这可能是也可能不是交易)
要解决这个问题,您可以结合使用 Manifest-placeholder
和 resValue
,即创建资源使用 resValue
并将 android:label
更改为您的资源。
我的 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"
}
}
但是,当我 assemble 包时,Gradle 抱怨重复的字符串资源。
我可以简单地从 string.xml 中删除 app_name 标记。但是,在这种情况下,Android Studio 会报告清单文件存在问题。
我该如何解决这个问题?问候。
不必弄乱 'resValue.' 您可以使用调试源集,它也允许您在调试中重新定义其他字符串。创建以下文件并在其中重新定义 'app_name' 字符串。
src/debug/res/values/strings.xml
只需确保您的 build.gradle 的 sourceSets
中没有类似以下的内容debug.setRoot('build-types/debug')
我也遇到了同样的问题。
我的解决方案是使用 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"])
}
}
缺点:
- HardCode appName 风格。 (这可能是也可能不是交易)
要解决这个问题,您可以结合使用 Manifest-placeholder
和 resValue
,即创建资源使用 resValue
并将 android:label
更改为您的资源。