清单合并失败,Android Studio中出现多个错误


249

因此,我是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

10
有关错误的详细信息,您可以在右下角的Android Studio中查看Gradle Console。
DragonT

我希望这个链接会有用。
Mortreza AD

我遇到了同样的错误,但是通过在项目和库中保留最小的SDK来解决了。
Raja Jawahar

youtu.be/K88WaSm3q8Y “清单合并由于Android Studio中的多个错误而失败”?
Roman Pokrovskij

Answers:


961

打开应用程序清单(AndroidManifest.xml),然后单击Merged Manifest查看下面的图片:

android-manifest-merge-feature

从图像中您可以在右列中看到错误,尝试解决该错误。它可能会帮助某些人遇到相同的问题。在这里阅读更多。


5
辉煌...找不到话表达我的谢意
Shahzad Afridi

2
就我而言,我将其向下滚动以查看错误
CodeToLife

不幸的是,Android Studio 3.5.2中没有任何“合并清单”选项卡。
FractalBob

@FractalBob我正在运行3.5.2并查看“合并的清单”选项卡。.也许在合并清单之前发生了其他错误。
sonyisda1

@ sonyisda1您是否在Linux环境中运行?我有Ubuntu 18.04 LTS。
FractalBob

120

<activity android:name=".MainActivity"/>从您的mainfest文件中删除 。正如您已经将其定义为:

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

因此,清单文件显示含糊不清。


31
当它仅修复Rowen的代码但对其他任何人完全无济于事时,这是一个可接受的答案,这太糟糕了。CLIFFORD的答案实际上显示了如何按照错误消息的建议“查看日志”。
安德鲁·科斯特

它仅在检查并删除AndroidManifest.xml文件中的所有重复条目时才能很好地工作。
vishwajit76'9

61

对我来说,这有效-

查找中的合并错误 AndroidManifest.xml

在此处输入图片说明

单击合并清单 AndroidManifest.xml

在此处输入图片说明

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


3
这是解决此问题的通用方法。这可以帮助您找到有关此问题的真正原因。
JoeGalind

60

我也面临着同样的问题,经过大量研究发现了解决方案:

  1. 您的最小sdk版本应与您使用的模块相同,例如:您的模块的最小sdk版本为14,而您的应用的最小sdk版本为9。
  2. 如果您的应用程序和模块的构建版本不相同。同样,它应该相同**总之,您的应用程序build.gradle文件和清单应具有相同的配置**
  3. 没有重复性,例如在清单文件中两次添加了相同的权限,两次提到了相同的活动。
  4. 如果您从项目中删除了任何活动,也请从清单文件中删除它。
  5. 有时是由于清单文件的标签,图标等标签所致:

a)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版本的cardview。支持:cardview-v7:25.3.1和appcompat v7:26.0.0使用版本为v7:26.0.0的cardview,因此两个库中存在差异,因此会出错

错误:任务':app:processDebugManifest'的执行失败。

清单合并失败:来自[com.android.support:appcompat-v7:26.0.0-alpha1] AndroidManifest.xml:27:9的属性meta-data#android.support.VERSION@value value =(26.0.0-alpha1) -com也出现在[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
在我的情况下,这是由于我添加了模块的主题,所以我用作了工具:replace“ icon,label,theme”
turbandroid

在我的情况下,这是由于我添加了模块的主题,所以我用作了以下工具:replace“ icon,label,theme”和xmlns:tools =“ schemas.android.com/tools ”。谢谢@ O'one
alfo888_ibg 18-03-23

14

除了可用的解决方案之外,请同时进行检查。
如果已设置android:allowBackup="false"AndroidManifest.xmlandroid:allowBackup="true"其他依赖项可能会发生冲突。

解决方案
作为建议的@CLIFFORD PY,切换到Merged ManifestAndroidManifest.xml。Android的工作室会建议添加tools:replace="android:allowBackup"<application />你的AndroidManifest.xml


12

我遇到了同样的问题,我刚刚在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,我很高兴为您提供帮助:)
Pre_hacker

11

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

<application
        tools:node="replace">

非常感谢
tej shah

8

在我的情况下,它显示错误是因为<uses-permission>元素存在冗余。因此,请检查AndroidManifest.xml文件是否相同。

Android Studio版本是3.0.1

操作系统是Windows 7

这是供参考的屏幕截图。

该屏幕快照显示清单文件中的冗余。


当此问题发布在@ CLIFFORD-PY的答案之前时,通过“合并的清单”视图查找合并的错误将捕获此特定的冗余错误。
sonyisda1


7

通常会在清单中有错误时发生。打开AndroidManifest.xml。单击合并的清单选项卡。在那里可以看到错误。还包括在那里提到的建议。当我导入com.google.android.gms时遇到类似问题时.maps.model.LatLng,建议我在application标签中包含tools:overrideLibrary =“ com.google.android.gms.maps”,构建成功。


3

我的情况我已经解决了

build.gradle(模块:应用)

defaultConfig {
----------
multiDexEnabled true
}
dependencies {
    ...........
    implementation 'com.google.android.gms:play-services-gcm:11.0.2'
    implementation 'com.onesignal:OneSignal:3.+@aar'
    }

此答案已重新添加到OnSignal推送通知中


2
  1. AndroidManifest.xml

    • 在申请时,添加tools:replace="android:icon, android:theme
    • 在清单根目录下,添加 xmlns:tools="http://schemas.android.com/tools
  2. build.gradle

    • 在根目录下,添加 useOldManifestMerger true


1

在过去的几天中,我也遇到了同样的问题。但是,经过大量研究,我终于找到了解决方案。
为了解决此问题,您需要做的是:
1.检查项目的build.gradle文件和模块的build.gradle文件是否包含所有依赖项的相同版本。
2.确保您项目的compileSdkVersionbuildToolsVersionminSdkVersiontargetSdkVersion与您添加到项目中的模块中的项目相匹配。

compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
    applicationId "com.example.appname"
    minSdkVersion 16
    targetSdkVersion 25
    versionCode 22
    versionName "2.0.3"

}

希望这可以帮助。


1

如果在添加Android库模块后出现此错误。
您可以通过简单的修复它删除android:label="@string/app_name"AndroidManifest.xml您的Android的库模块


1

打开gradle控制台,然后看到gradle建议您添加特定的行(例如:tools:replace =“ android:allowBackup”或tools:replace =“ android:label”等)。将该行添加到标记和同步gradle下的清单文件中,就是这样。


1

就我而言,它是在Activity标签内留了一些空的intent-filter

    <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">

            <intent-filter>

            </intent-filter>

    </activity> 

因此,只需删除它们即可解决问题。

    <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
    </activity> 

0

在我的情况下,作为Android Studio的新手,我将现有项目从Eclipse移到了Android Studio,发现Manifest.xml中有一个活动的重复定义,但Eclipse并未选择该活动,显示为Gradle错误。

我通过转到Gradle控制台(屏幕右下方)找到了这个。


0

当我折射(用SHIFT + F6重命名)文件中字段的名称时,我遇到了两次。例如,如果您在Java类中有一个变量名“ id”,并用SHIFT + F6重命名。如果您不注意下一个对话框,该对话框将询问您要更改ID的其他位置,然后勾选所有复选框,它将更改布局文件中所有ID的新值。


0

这是非常简单的错误,仅当您在mainifest.xml文件中两次定义了任何活动调用时才会发生

<activity android:name="com.futuretech.mpboardexam.Game" ></activity>

//and launcher also------like that



//solution:use only one 

0

将其放在应用程序模块build.gradle的末尾:

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == 'com.android.support') {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion '25.3.0'
        }
    }
}}

由此


0

补充答案潘·范林。我删除了以下几行:

  android:icon="@mipmap/ic_launcher"
  android:label="name"


0

以下黑客作品:

  1. 添加 xmlns:tools="http://schemas.android.com/tools"在清单标记中行
  2. 添加 tools:replace="android:icon,android:theme,android:allowBackup,label,name" 应用标签


0

就我而言,我使用的是jetbrains库中的一些注释。我删除了这些注释和依赖项,并且工作正常。

因此,请仔细检查android代码和依赖项中的库。


0

如果您manifestPlaceholderbuild.gradle文件中使用多个项目,则必须将它们添加为数组元素,而不是单独的项目。

例如,这将导致生成错误或编译错误:“ java.lang.RuntimeException:清单合并失败,并出现多个错误”:

android {
    ...
    defaultConfig {
        manifestPlaceholders = [myKey1: "myValue1"]
        manifestPlaceholders = [myKey2: "myValue2"] // Error!
    }
}

这将修复错误:

android {
    ...
    defaultConfig {
        manifestPlaceholders = [myKey1: "myValue1", myKey2: "myValue2"]
    }
}

0

这是因为您将新的材料库与旧的支持库一起使用。

您必须迁移android.supportandroidx才能使用com.google.android.material

如果您使用的是Android Studio v 3.2或更高版本,只需

去重构--->迁移到ANDROIDX。

请备份您的项目。


0

我正在使用和FirebaseUI Library一起使用Facebook SDK Library,这导致了我的问题。

implementation 'com.firebaseui:firebase-ui-database:0.4.4'
implementation 'com.facebook.android:facebook-android-sdk:[4,5)'

从[这里] [1],我摆脱了这个问题。

随着latest updateFirebaseUI库,Facebook的SDK的以前版本也是它的一部分。

如果您同时使用这两个库,请删除Facebook SDK库

https://github.com/firebase/FirebaseUI-Android/issues/230

更新

Android Studio 3.0和更高版本开始,app.gradle需要使用文件implementationapi代替compile将依赖项添加到应用程序。


0

在看到CLIFFORD的答案以查看错误后,帮助我解决此问题的方法是在intent-filter操作标签中将“ android:namex”重命名为“ android:name”。如果相同的解决方案可以帮助其他人。

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:namex="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.