Android Studio 构建错误 : manifestMergerXXXX?

标签 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

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

EDIT 基于评论:一些评论者注意到我需要遵循错误消息中非常明确的指示,只有这些评论者遗漏了错误消息指示我编辑中间版本产品。

非常清楚:中间构建产品不是构建系统应该永远、永远指示用户修改的东西。根据定义,它是仅供构建系统使用的东西。它唯一的额外用途是保存状态,以便用户可以对错误的构建进行故障排除。 Android Studio 告诉我修改此文件的事实证明,Android Studio 中或更可能是我的配置和/或构建脚本中存在严重问题。但是,什么?

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

<application
    android:label="@string/app_name"
    android:allowBackup="false"
    tools:replace="android:allowBackup">
    <...>
</application>

如您所见,我正在声明 Android Studio 提示的元素,这正是我被要求的方式。除了不!因为 Android Studio 要求我修改 merged AndroidManifest.xml - 显然我不应该这样做,因为它是一个构建产品。这个项目是在我所有同事的机器上构建的,因为他们没有更新到最新的 Android Studio。现在由我来承担,坦率地说,我认为对我来说最好的办法是卸载 Android Studio 并重新开始。

最佳答案

错误信息告诉你如何解决问题

Suggestion: add 'tools:replace="android:allowBackup"' to <application> element

基本上,您声明了 allowBackup Manifest 属性两次。一次在 AndroidManifest.xml 文件中,一次在库中(可能通过 gradle)。

仅供引用,在这种情况下,gradle 声明将胜出。

关于Android Studio 构建错误 : manifestMergerXXXX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35137919/

相关文章:

android - 套接字连接 - 读取 XML 文件插入垃圾字符

android - 应用程序卸载后在 Android 中存储设置

android - 在我的项目中导入 android-crop 库

gradle - 禁用所有期望编译项目的传递依赖项(…)

android - 无法在 docker 中获取 gradle build-tools - Apple M1

java - 如何自动更新 SharedPreferences 变量?

android - 如何显示textview可点击?

Android "Hello World"Galaxy Tab 屏幕上的布局问题

android - 本地路径不存在

gradle - 如何在 gradle 属性文件中加密 MarkLogic 服务器访问凭据