Gradle resValue会导致重复的string资源

我的Android清单文件定义了如下的应用程序名称:

android:label="@string/app_name" 

res / values / strings.xml中存在相应的app_name条目

现在,在我的build.gradle中,我重新定义了beta版本的应用程序名称,如下所示:

 buildTypes { beta { applicationIdSuffix ".beta" debuggable true resValue "string", "app_name", "MyTest Beta" } } 

但是,当我组装这个包时,Gradle抱怨重复的string资源。

我可以简单地从string.xml中删除app_name标记。 但是,在这种情况下,Android Studio会报告清单文件的问题。

我该如何解决? 问候。

Solutions Collecting From Web of "Gradle resValue会导致重复的string资源"

不应该惹一个'resValue'。 您可以使用debugging源代码,这将允许您在debugging中重新定义其他string。 创build以下文件并在其中重新定义“app_name”string。

 src/debug/res/values/strings.xml 

只要确保在build.gradle的sourceSets中没有像下面这样的东西

 debug.setRoot('build-types/debug') 

我也遇到了同样的问题。 我的解决scheme是使用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-placeholderresValue ,这是创build资源使用resValue和更改android:label到你的资源。