Android Studio中的清单合并出现多个错误

430

所以,我是一个刚开始学习 Android 和 Java 的初学者。今天在尝试使用 Intent 时,遇到了一个错误。

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed with multiple errors, see logs
我在这里找到了一些解决方案并尝试实施,但没有成功。
这是我的 build.gradle 文件:
apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.0"

defaultConfig {
    applicationId "com.example.rohan.petadoptionthing"
    minSdkVersion 10
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.0'
}

这是我的AndroidManifest:

<?xml version="1.0" encoding="utf-8"?>
非常感谢您的信任。以下是您需要翻译的内容:

package="com.example.rohan.petadoptionthing" >

<application

    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".Second"
        />

    <activity android:name=".third"/>
    <activity android:name=".MainActivity"/>


</application>

这是我学习编程的第一周,如果这听起来很傻请原谅。我对此非常陌生,也没有找到其他可以询问的地方。如果我违反了任何规定,请原谅。


2
在你的 menifest.xml 文件中移除 <activity android:name=".MainActivity"/> 这一行。 - Pankaj Talaviya
12
要获取有关错误的详细信息,您可以在Android Studio的右下角检查Gradle控制台。 - DragonT
我希望这个链接会有用。 - Mortreza AD
我遇到了相同的错误。但是通过在项目和库中保持相同的最小SDK,我解决了它。 - Raja Jawahar
"Manifest Merger在Android Studio中出现多个错误导致失败"。 - Roman Pokrovskij
在你的 Build.Gradle 文件中,你可以添加以下内容:"maven { url 'https://jitpack.io' }",然后删除它并同步 Gradle。对我来说,这个方法很有效。 - Bay
45个回答

1459

打开应用程序清单文件(AndroidManifest.xml),并点击编辑窗格底部的Merged Manifest标签。请参考下面的图像:

输入图像描述

从图中可以看到右侧列中的错误(Error),尝试解决此错误。这可能会帮助遇到同样问题的其他人。在此处阅读更多内容。

另外,一旦找到了错误,并且如果您是从使用的外部库中获取该错误,您必须让编译器忽略外部库中的属性。 //将以下属性添加到清单文件中的应用程序标记中

   tools:replace="android:allowBackup" 
                                                                                                                                          
   //Add this in the manifest tag at the top

   xmlns:tools="http://schemas.android.com/tools"

8
在我的情况下,我向下滚动了一点点,以查看错误。 - CodeToLife
很遗憾,在Android Studio 3.5.2中没有"Merged Manifest"选项卡。 - FractalBob
@FractalBob,我正在运行3.5.2版本,并且看到了“合并清单”选项卡。也许在清单合并之前出现了其他错误。 - sonyisda1
@sonyisda1 你是在Linux环境下运行吗?我使用的是Ubuntu 18.04 LTS。 - FractalBob
@FractalBob Win10 Pro 1903 - sonyisda1
显示剩余6条评论

125
从你的清单文件中删除<activity android:name=".MainActivity"/>,因为你已经把它定义为:
 <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

所以,清单文件显示模糊。


51
很遗憾这个回答被接受了,虽然它修复了Rowen的代码,但对其他人毫无帮助。CLIFFORD的答案实际上告诉你如何“查看日志”,就像错误信息所建议的那样。 - Andrew Koster
它能够很好地工作,只需检查并删除AndroidManifest.xml文件中的任何重复条目。 - vishwajit76

71

以下方法适用于我 -

寻找AndroidManifest.xml中的合并错误

进入图像描述

AndroidManifest.xml中点击合并后的清单

进入图像描述

您可以在右列中查看清单合并错误。这可能有助于解决此问题。


3
这是针对该问题的通用修复方案。它能帮助您找到与此相关的任何问题的真正原因。 - JoeGalind

66

我也遇到了相同的问题,经过大量研究找到了解决方案:

  1. 你的min sdk版本应该与你正在使用的模块的版本相同,例如:你的模块min sdk版本为14,你的应用程序min sdk版本为9,应该是相同的。
  2. 如果你的应用程序和模块的构建版本不同,那么它们应该是相同的。
    ** 简而言之,你的应用程序build.gradle文件和清单文件应该具有相同的配置 **
  3. 清单文件中没有重复添加权限或重复声明活动等情况。
  4. 如果你从项目中删除了任何活动,请确保在清单文件中也将其删除。
  5. 有时这是由于清单文件的标签(如label,icon等)引起的:

a)在manifest标记中添加xmlns:tools行。

b)在应用程序标记中添加tools:replace =或tools:ignore =。

例子:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.slinfy.ikharelimiteduk"
    xmlns:tools="http://schemas.android.com/tools"
    android:versionCode="1"
    android:versionName="1.0" >

  <application
      tools:replace="icon, label"
      android:label="myApp"
      android:name="com.example.MyApplication"
      android:allowBackup="true"
      android:hardwareAccelerated="false"
      android:icon="@drawable/ic_launcher"
      android:theme="@style/Theme.AppCompat" >
  </application>

</manifest>
  1. 如果两个依赖项的版本不同 例如:您正在使用适用于appcompat v7:26.0.0和Facebook com.facebook.android:facebook-android-sdk:[4,5)的依赖项,Facebook使用版本为com.android.support:cardview-v7:25.3.1的cardview,而appcompat v7:26.0.0使用版本为v7:26.0.0的cardview,因此这两个库存在差异,从而导致错误。

错误:执行任务“:app:processDebugManifest”失败。

清单合并失败:属性meta-data#android.support.VERSION@value value=(26.0.0-alpha1),来自[com.android.support:appcompat-v7:26.0.0-alpha1]AndroidManifest.xml:27:9-38, 也存在于[com.android.support:cardview-v7:25.3.1] AndroidManifest.xml:24:9-31 value=(25.3.1)。 建议:在AndroidManifest.xml:25:5-27:41中添加'tools:replace ="android:value"'元素以覆盖。

因此,通过使用版本为25.3.1的appcompat,我们可以避免此错误。

考虑上述要点,您将摆脱这种烦人的问题。您也可以查看我的博客 https://wordpress.com/post/dhingrakimmi.wordpress.com/23


1
在我的情况下,这是由于我添加的模块的主题。因此,我使用了“tools:replace”工具:“icon,label,theme”。 - turbandroid
在我的情况下,这是由于我添加的模块主题,所以我使用了"tools:replace"、"icon"、"label"和"theme"作为工具,并且使用了"xmlns:tools="http://schemas.android.com/tools""。谢谢@O'one。 - alfo888_ibg
这是这个问题最有价值的答案! - Nguyen Minh Hien

19

只需在您的项目清单应用程序标签中添加以下代码...

<application
        tools:node="replace">

在我的情况下起作用了,谢谢。 - Zahid Iqbal
请在清单标签中添加xmlns:tools="http://schemas.android.com/tools"的命名空间声明。 - Abdulbasit

18
如果您的项目面向Android 12,则在所有带有<intent-filter><activity>标签中添加此内容。
android:exported="true/false"

如果所有的活动都已经有了导出标签,那该怎么办? - M3-n50
1
这很可能是正确的,但请查看被接受的答案以获得解释。 - Mihai Fumarel

15

我也遇到了同样的问题,但是我在我的 manifest.xml 文件中添加了一行代码,问题就得到解决了。

tools:replace="android:allowBackup,icon,theme,label,name"> 

将此行添加在下面

<application
    android:name=".MyApplication"
    android:allowBackup="true"
    android:icon="@drawable/launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:screenOrientation="portrait"
    android:supportsRtl="true"
    android:theme="@style/AppThemecustom"
    tools:replace="android:allowBackup,icon,theme,label">

希望这可以帮助到你。


非常感谢!我在一个非常特定的场景中遇到了问题,这是由Zendesk支持页面引起的,当我点击“附加文件”时。尝试了许多不同问题的答案,只有你的评论帮助了我! - Natalie
@Natalie 很高兴能帮到你 :) - Pre_hacker

15

除了现有的解决方案外,请也检查一下以下内容。
如果您在 AndroidManifest.xml 中设置了 android:allowBackup="false",那么在其他依赖项中使用 android:allowBackup="true" 可能会出现冲突。

解决方案
如@CLIFFORD P Y所建议的那样,在您的 AndroidManifest.xml 中切换到Merged Manifest。Android Studio将建议在 <application /> 中添加 tools:replace="android:allowBackup" 到您的 AndroidManifest.xml


11
我通过 重构 -> 迁移到AndroidX 解决了这个问题。
GL

10

我的解决方案如下:

1- 打开清单(manifest)

2- 在右上角,检查如下所示的突出显示的问题:

3- 点击红色的问题图标。 这将打开如下所示的问题选项卡。 problems tab

4-逐个解决它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接