Android Studio Build Error:manifestMergerXXXX?

Pat*_*nan 2 android gradle

我正在运行Android Studio 2.0 Beta 3.我有一个依赖于外部库的项目.当我使用Android Studio构建时,我收到以下错误消息:

($my_project_path)/build/intermediates/manifest/tmp/manifestMerger354333932548019277.xml:17:9-36 Error:
Attribute application@allowBackup value=(false) from [debug] AndroidManifest.xml:17:9-36
is also present at [($library)] AndroidManifest.xml:12:9-35 value=(true)
Suggestion: add 'tools:replace="android:allowBackup"' to <application> element at manifestMerger354333932548019277.xml:7:5-9:19 to override
Error:Execution failed for task ':$(project):processDebugAndroidTestManifest'.
> java.lang.RuntimeException: Manifest merger failed : Attribute application@allowBackup value=(false) from [debug] AndroidManifest.xml:17:9-36
is also present at [($library)] AndroidManifest.xml:12:9-35 value=(true)
Suggestion: add 'tools:replace="android:allowBackup"' to <application> element at manifestMerger354333932548019277.xml:7:5-9:19 to override
Run Code Online (Sandbox Code Playgroud)

这很奇怪.Android Studio建议我编辑中间构建步骤的产品,以便完成编译?另外,当我查看有问题的源AndroidManifest.xml时,上层已将"tools-replace"属性定义为"android:allowBackup".简而言之,我不知道为什么我应该得到这个消息.此外,我的构建在命令行中运行良好.有什么建议?

编辑基于评论:一些评论者注意到我需要按照错误消息中的非常明确的指示,只有这些评论者错过了错误消息指示我编辑中间构建产品.

要非常明确:中间构建产品不是构建系统应该永远指导用户修改的东西.根据定义,仅仅是构建系统的使用.它唯一的用途是保存状态,以便用户可以对错误的构建进行故障排除.Android Studio告诉我修改此文件的事实证明,在Android Studio中,或者更有可能在我的配置和/或构建脚本中,某些内容严重受损.但是,什么?

为了澄清,这里是<application>项目中包含库的元素:

<application
    android:label="@string/app_name"
    android:allowBackup="false"
    tools:replace="android:allowBackup">
    <...>
</application>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在声明Android Studio正在抱怨的元素,正是我被请求的方式.不是!因为Android Studio要求我修改合并的 AndroidManifest.xml - 显然我不应该这样做,因为它是一个构建产品.这个项目建立在我所有同事的机器上,因为它们没有更新到最新的Android Studio.它现在在我身上,坦率地说,我认为对我来说最好的事情是卸载Android Studio并重新开始.

JBi*_*gas 6

该错误消息告诉您如何解决此问题

Suggestion: add 'tools:replace="android:allowBackup"' to <application> element
Run Code Online (Sandbox Code Playgroud)

基本上你allowBackup两次声明了Manifest属性.一旦进入AndroidManifest.xml文件并再次进入库(可能是通过gradle).

在这种情况下,参与者将获得gradle声明.