Manifest Merger schlug mit mehreren Fehlern in Android Studio fehl

249

Ich bin ein Anfänger in Android und Java. Ich habe gerade angefangen zu lernen. Während ich heute mit Intent experimentierte , ist ein Fehler aufgetreten.

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed with multiple errors, see logs

Ich habe hier einige Lösungen gefunden und versucht, sie zu implementieren, aber es hat nicht funktioniert.

Das ist mein 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'
}

Dies ist mein 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>

Dies ist meine erste Woche mit Codierung. Es tut mir leid, wenn dies eine wirklich dumme Sache ist. Ich bin wirklich neu in diesem Bereich und habe keinen anderen Ort gefunden, an dem ich fragen könnte. Entschuldigung, wenn ich gegen Regeln verstoßen habe

Rohan Mallya
quelle
2
Entfernen Sie die Zeile <activity android: name = ". MainActivity" /> in Ihrer Datei menifest.xml
Pankaj Talaviya
10
Ausführliche Informationen zu dem Fehler finden Sie in der Gradle Console in Android Studio in der unteren rechten Ecke.
DragonT
Ich hoffe, dieser Link wird nützlich sein.
Mortreza AD
Ich habe den gleichen Fehler erhalten. Aber ich habe ihn behoben, indem ich das gleiche Mindest-SDK in Projekt und Bibliothek beibehalten habe.
Raja Jawahar
youtu.be/K88WaSm3q8Y "Manifest Merger mit mehreren Fehlern in Android Studio fehlgeschlagen"?
Roman Pokrovskij

Antworten:

962

Öffnen Sie das Anwendungsmanifest ( AndroidManifest.xml) und klicken Sie auf Merged Manifest. Überprüfen Sie das Bild unten:

android-manifest-merge-feature

Auf dem Bild sehen Sie Fehler in der rechten Spalte. Versuchen Sie, den Fehler zu beheben. Es kann jemandem mit dem gleichen Problem helfen. Lesen Sie hier mehr .

CLIFFORD PY
quelle
5
brillant ... kann keine Worte finden, um mein Dankeschön auszudrücken
Shahzad Afridi
2
In meinem Fall habe ich ein bisschen nach unten
gescrollt
Leider gibt es in Android Studio 3.5.2 keine Registerkarte "Zusammengeführtes Manifest".
FractalBob
@FractalBob Ich verwende 3.5.2 und sehe die Registerkarte 'Zusammengeführtes Manifest'. Möglicherweise ist ein anderer Fehler aufgetreten, bevor Manifeste zusammengeführt werden.
Sonyisda1
@ sonyisda1 Laufen Sie in einer Linux-Umgebung? Ich habe Ubuntu 18.04 LTS.
FractalBob
120

Entfernen Sie <activity android:name=".MainActivity"/>aus Ihrer Mainfest-Datei. Wie Sie es bereits definiert haben als:

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

Also, Manifest-Datei, die Mehrdeutigkeit zeigt.

Android Geek
quelle
31
Es ist schade, dass dies die akzeptierte Antwort ist, wenn sie nur Rowens Code korrigiert, aber für andere völlig nicht hilfreich ist. Die Antwort von CLIFFORD zeigt Ihnen tatsächlich, wie Sie "Protokolle anzeigen", wie in der Fehlermeldung angegeben.
Andrew Koster
Es funktioniert sehr gut, nur doppelte Einträge in der Datei AndroidManifest.xml zu überprüfen und zu entfernen.
Vishwajit76
61

Für mich funktioniert DAS -

Zusammenführen von Fehlern finden in AndroidManifest.xml

Geben Sie hier die Bildbeschreibung ein

Klicken Sie auf Zusammengeführtes Manifest in AndroidManifest.xml

Geben Sie hier die Bildbeschreibung ein

Sie können den Manifest-Zusammenführungsfehler in der rechten Spalte anzeigen. Es kann helfen, dieses Problem zu lösen.

Anirban
quelle
3
Dies ist eine allgemeine Lösung für dieses Problem. Dies hilft Ihnen, den wahren Grund für ein diesbezügliches Problem zu finden.
JoeGalind
60

Ich hatte auch die gleichen Probleme und fand nach vielen Recherchen die Lösung:

  1. Ihre min sdk-Version sollte mit den von Ihnen verwendeten Modulen identisch sein, z. B.: Ihre min sdk-Version Ihres Moduls ist 14 und Ihre min sdk-Version Ihrer App ist 9. Sie sollte identisch sein.
  2. Wenn die Build-Version Ihrer App und Module nicht identisch ist. Wieder sollte es gleich sein ** Kurz gesagt, Ihre App- build.gradleDatei und Ihr Manifest sollten die gleichen Konfigurationen haben **
  3. Es gibt keine Duplikate wie die gleichen Berechtigungen, die zweimal in der Manifestdatei hinzugefügt wurden, und die gleiche Aktivität, die zweimal erwähnt wird.
  4. Wenn Sie eine Aktivität aus Ihrem Projekt gelöscht haben, löschen Sie sie auch aus Ihrer Manifestdatei.
  5. Manchmal liegt es an der Bezeichnung, dem Symbol usw. der Manifestdatei:

a) Fügen Sie die xmlns:toolsZeile in das Manifest-Tag ein.

b) Fügen Sie tools:replace=oder tools:ignore=in das Anwendungs-Tag ein.

Beispiel:

<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. Wenn zwei Abhängigkeiten nicht dasselbe Versionsbeispiel haben: Sie verwenden die Abhängigkeit für Appcompat v7: 26.0.0 und für Facebook com.facebook.android:facebook-android-sdk:[4,5) Facebook verwendet die Kartenansicht der Version com.android. support: cardview-v7: 25.3.1 und appcompat v7: 26.0.0 verwenden cardview der Version v7: 26.0.0. Daher gibt es in zwei Bibliotheken eine Diskriminierung und daher Fehler

Fehler: Ausführung für Aufgabe ': app: processDebugManifest' fehlgeschlagen.

Manifest-Fusion fehlgeschlagen: Attribut meta-data#android.support.VERSION@value value = (26.0.0-alpha1) von [com.android.support:appcompat-v7:26.0.0-alpha1] AndroidManifest.xml: 27: 9 -38 ist auch unter [com.android.support:cardview-v7:25.3.1] AndroidManifest.xml: 24: 9-31 value = (25.3.1) vorhanden. Vorschlag: Fügen Sie 'tools: replace = "android: value"' zum Element in AndroidManifest.xml hinzu: 25: 5-27: 41, um es zu überschreiben.

Mit Appcompat der Version 25.3.1 können wir diesen Fehler vermeiden

Wenn Sie die oben genannten Punkte berücksichtigen, werden Sie dieses irritierende Problem beseitigen. Sie können auch meinen Blog unter https://wordpress.com/post/dhingrakimmi.wordpress.com/23 überprüfen

Kimmi Dhingra
quelle
1
In meinem Fall lag es am Thema des Moduls, das ich hinzugefügt habe, also habe ich es als Werkzeug verwendet: Ersetzen Sie "Symbol, Etikett, Thema"
Turbandroid
In meinem Fall lag es am Thema des Moduls, das ich hinzugefügt habe, also habe ich es als Werkzeuge verwendet: Ersetzen Sie "Symbol, Bezeichnung, Thema" und xmlns: tools = " schemas.android.com/tools ". danke @ O'one
alfo888_ibg
14

Überprüfen Sie dies zusätzlich zu den verfügbaren Lösungen auch.
Wenn Sie festgelegt haben android:allowBackup="false"in Ihrem AndroidManifest.xmldann kann es ein Konflikt für seine android:allowBackup="true"in anderen Abhängigkeiten.

Lösung
Wechseln Sie wie von @CLIFFORD PY vorgeschlagen zu Merged Manifestin Ihrem AndroidManifest.xml. Android Studio wird vorschlagen , hinzufügen tools:replace="android:allowBackup"in <application />Ihrem AndroidManifest.xml.

Chintan Shah
quelle
12

Ich hatte das gleiche Problem und habe gerade eine Zeile in meine manifest.xml eingefügt, und es hat bei mir funktioniert.

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

Fügen Sie diese Zeile unter hinzu

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

Hoffe es wird helfen.

Pre_hacker
quelle
ich danke dir sehr! Ich hatte dieses Problem in einem ganz bestimmten Szenario, das durch die Zendesk-Support-Seite verursacht wurde, als ich auf "Datei anhängen" klickte. Versuchte so viele Antworten von verschiedenen Fragen und nur Ihr Kommentar half!
Natalie
@ Natalie Ich bin froh, dass es geholfen hat :)
Pre_hacker
11

Fügen Sie einfach den folgenden Code in Ihr Projektmanifest-Anwendungstag ein ...

<application
        tools:node="replace">
Sankalp
quelle
Vielen Dank
tej shah
8

In meinem Fall wurde ein Fehler angezeigt, da das <uses-permission>Element redundant war . Bitte checken Sie in Ihrer AndroidManifest.xmlDatei das gleiche ein.

Die Android Studio-Version ist 3.0.1

Betriebssystem ist Windows 7

Hier ist der Screenshot als Referenz.

Screenshot, der die Redundanz in der Manifestdatei zeigt.

Parth Patel
quelle
Während dies vor der Antwort von @ CLIFFORD-PY veröffentlicht wurde, wird das Auffinden von Zusammenführungsfehlern über die Ansicht "Zusammengeführtes Manifest" diesen bestimmten redundanten Fehler abfangen.
Sonyisda1
8

Ich habe dies mit Refactor gelöst -> Zu AndroidX migrieren

GL

Braian Coronel
quelle
7

Tritt normalerweise auf, wenn Sie Fehler in Ihrem Manifest haben. Öffnen Sie AndroidManifest.xml. Klicken Sie auf die Registerkarte Zusammengeführtes Manifest. Die Fehler werden dort angezeigt. Fügen Sie auch die dort genannten Vorschläge hinzu. Wenn ich beim Importieren von com.google.android.gms ein ähnliches Problem hatte .maps.model.LatLng schlug mir vor, die folgenden Tools einzuschließen: overrideLibrary = "com.google.android.gms.maps", und der Build war erfolgreich.

Archana Prabhu
quelle
3

Mein Fall habe ich behoben durch

build.gradle (Modul: App)

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

Diese Antwort wurde an die OnSignal-Push-Benachrichtigung weitergeleitet

Md. Shofiulla
quelle
2
  1. In AndroidManifest.xml:

    • Bei Anwendung hinzufügen tools:replace="android:icon, android:themeund
    • Fügen Sie an der Manifest-Wurzel hinzu xmlns:tools="http://schemas.android.com/tools
  2. In build.gradle:

    • Fügen Sie an der Wurzel hinzu useOldManifestMerger true
ao wu
quelle
2

Die Minium-SDK-Version sollte mit der von Ihnen verwendeten Module / Lib identisch sein. Beispiel: Ihre Modul-SDSK-Version ist 26 und Ihre App-SDK-Version 21 ist identisch. Sie sollte identisch sein.

Ejaz Ahmad
quelle
1

In den letzten Tagen habe ich auch das gleiche Problem durchlaufen. Aber nach viel Recherche habe ich endlich eine Lösung dafür gefunden.
Um dieses Problem zu lösen, was Sie tun müssen , ist:
1. Überprüfen Sie, ob Ihr Projekt build.gradle Datei und die des Moduls build.gradle Datei gleichen Versionen aller Abhängigkeiten enthalten.
2. Stellen Sie sicher, dass compileSdkVersion , buildToolsVersion , minSdkVersion und targetSdkVersion Ihres Projekts mit denen in den Modulen oder Bibliotheken übereinstimmen , die Sie dem Projekt hinzugefügt haben.

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

}

Hoffe das hilft.

Rahul Deep Singh
quelle
1

Wenn Sie nach dem Hinzufügen eines Android-Bibliotheksmoduls diesen Fehler erhalten.
Sie können das Problem beheben, indem Sie es einfach android:label="@string/app_name"aus AndroidManifest.xmlIhrem Android-Bibliotheksmodul entfernen

Phan Van Linh
quelle
1

Öffnen Sie Ihre Gradle-Konsole, und Sie sehen, dass Gradle Ihnen vorschlägt, die bestimmte Zeile hinzuzufügen (wie: tools: replace = "android: allowBackup" oder tools: replace = "android: label" usw.). Fügen Sie diese Zeile unter Tag und Sync Gradle in Ihre Manifestdatei ein.

Nazmus Saadat
quelle
1

In meinem Fall ist es passiert, dass ein leerer Intent-Filter im Activity- Tag belassen wurde

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

            <intent-filter>

            </intent-filter>

    </activity> 

Nur das Entfernen löste das Problem.

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

Als Neuling in Android Studio hatte ich in meinem Fall ein vorhandenes Projekt von Eclipse nach Android Studio verschoben und festgestellt, dass eine doppelte Definition einer Aktivität in meiner Manifest.xml vorhanden war, die nicht von Eclipse übernommen wurde ein Gradle-Fehler.

Ich fand dies, indem ich zur Gradle-Konsole (unten rechts auf dem Bildschirm) ging.

JanB
quelle
0

Ist mir zweimal passiert, als ich den Namen eines Feldes in unseren Dateien refraktor (mit UMSCHALT + F6 umbenennen) habe und Sie aufgefordert werden, ihn überall zu ändern, und wir ändern den Namen überall, ohne darauf zu achten. Wenn Sie beispielsweise einen Variablennamen "id" in Ihrer Java-Klasse haben und diesen mit UMSCHALT + F6 umbenennen. Wenn Sie nicht auf den nächsten Dialog achten, in dem Sie gefragt werden, wo sonst die ID geändert werden soll, und Sie alle ankreuzen, wird die gesamte ID in Ihren Layoutdateien vom neuen Wert geändert.

Rakesh Yadav
quelle
0

Dies ist ein sehr einfacher Fehler, der nur auftritt, wenn Sie einen Aktivitätsaufruf zweimal in der Datei mainifest.xml definieren. Beispiel wie

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

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



//solution:use only one 
Lalit Baghel
quelle
0

Fügen Sie dies am Ende Ihres App-Moduls build.gradle ein:

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

davon

SCHATTENNETZ
quelle
0

Ergänzen Sie die Antwort Phan Van Linh. Ich habe diese Zeilen gelöscht:

  android:icon="@mipmap/ic_launcher"
  android:label="name"
Den
quelle
0

Migrieren Sie einfach wie oben gezeigt auf Androidx und setzen Sie dann die minimale SDK-Version auf 26 ... ohne Zweifel funktioniert dies perfekt

sammy mutahi
quelle
0

Der folgende Hack funktioniert:

  1. Fügen Sie die xmlns:tools="http://schemas.android.com/tools"Zeile im Manifest-Tag hinzu
  2. Fügen Sie tools:replace="android:icon,android:theme,android:allowBackup,label,name" das Anwendungs-Tag hinzu
Shoaib Ahmed
quelle
0

Ich habe dies durch Entfernen des android:replaceTags gelöst

Gurjap singh
quelle
0

In meinem Fall habe ich einige Anmerkungen aus der Jetbrains-Bibliothek verwendet. Ich habe diese Anmerkungen und Abhängigkeiten entfernt und es hat gut funktioniert.

Bitte überprüfen Sie die Bibliotheken in Android-Code und Abhängigkeiten sorgfältig.

Chaman Gurjar
quelle
0

Wenn Sie mehrere manifestPlaceholderElemente in Ihrer build.gradleDatei verwenden, müssen Sie diese als Array-Elemente anstelle separater Elemente hinzufügen.

Dies führt beispielsweise zu einem Build- oder Kompilierungsfehler: "java.lang.RuntimeException: Manifest-Zusammenführung mit mehreren Fehlern fehlgeschlagen":

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

Dies wird den Fehler beheben:

android {
    ...
    defaultConfig {
        manifestPlaceholders = [myKey1: "myValue1", myKey2: "myValue2"]
    }
}
Mr-IDE
quelle
0

Dies liegt daran, dass Sie die neue Materialbibliothek mit der älteren Supportbibliothek verwenden.

Sie müssen migrieren android.support, androidxum verwenden zu können com.google.android.material.

Wenn Sie Android Studio v 3.2 oder höher verwenden, einfach

Gehe zu Refactor ---> MIGRATE TO ANDROID X.

Erstellen Sie ein Backup Ihres Projekts.

Fazal Jarral
quelle
0

Ich benutzte das FirebaseUI Libraryzusammen mit dem Facebook SDK Library, was mir das Problem verursachte.

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

Und von [hier] [1] habe ich dieses Problem beseitigt.

Mit dem latest updatevon FirebaseUI Bibliothek ist vorherige Version von Facebook SDK auch ein Teil davon.

Wenn Sie beide Bibliotheken verwenden, entfernen Sie bitte die Facebook SDK-Bibliothek .

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

AKTUALISIEREN

Von Android Studio 3.0und den späteren Versionen app.gradlewird Datei verwenden erforderlich implementationoder apistatt compilezum Hinzufügen der Abhängigkeiten der App.

Mohammedsalim Shivani
quelle
0

Nachdem ich die Antwort von CLIFFORD gesehen hatte, um den Fehler zu sehen, half mir die Lösung dieses Problems, 'android: namex' in 'android: name' im Intention-Filter-Action-Tag umzubenennen. Für den Fall, dass die gleiche Lösung jemand anderem hilft.

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

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