Android Studio Gradle Icon Fehler, Manifest Merger


141

Ich sehe diese Nachricht immer wieder und bin mir nicht sicher, wie ich sie endgültig lösen soll.

Error:(43, 9) Attribute application@icon value=(@drawable/new_app_icon) from AndroidManifest.xml:43:9
    is also present at com.github.erizet.signala:signala-longpolling:0.20:7:18 value=(@drawable/ic_launcher)
    Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml:40:5 to override
:OpenBook:processDebugManifest FAILED
Error:Execution failed for task ':OpenBook:processDebugManifest'.
> Manifest merger failed with multiple errors, see logs

android:replace="android:icon"Ich habe versucht , mein Manifest auch mit meinem Symbol zu erweitern.

Ich habe versucht, das android:icon="@drawable/ic_launcheraus der Bibliothek zu löschen, aber es kommt immer wieder zurück, wenn ich es baue, weil es aus Maven importiert wird

Irgendwelche Ideen ?


Dieses Problem tritt auf, wenn ein Problem in den Manifestdatei-Tags auftritt. Bitte überprüfen Sie die Antwort stackoverflow.com/a/39509659/2732632
Kimmi Dhingra

Ich hatte das gleiche Problem, als ich doppelte Berechtigungen im Manifest hinzufügte.
Cloy

Antworten:


342

Es scheint die Schuld des Mainfest Merger Tools für Gradle zu sein.

http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger

Es wurde durch Hinzufügen zu meinem Manifest-Tag behoben xmlns:tools="http://schemas.android.com/tools"

Dann tools:replace="android:icon,android:theme"zum Anwendungs-Tag hinzugefügt

Dies weist die Fusion an, mein Manifest-Symbol und -Thema und nicht andere Bibliotheken zu verwenden

Hoffe es hilft danke


6
Das Problem besteht für mich immer noch. Arbeiten in Android Studio 1.1.
Bolling

1
Vielen Dank! Arbeitete für mich
Sandeep

4
Neueste Versionen von Android 2.0. funktioniert nicht. Wer auch immer geantwortet hat, sollte dieses Q aktualisieren, wenn er Generationen retten wollte, sonst wird es bald nutzlos sein
Karue Benson Karue

3
Studio 2.2 von heute alle haben dies und arbeiten nicht an diesem Problem
Prasad

2
funktioniert nicht für Android Studio 2.2 mit Gradle 2.2.0.
DysaniazzZ

54

Ich habe das gleiche Problem, ich xmlns:tools="http://schemas.android.com/tools"behebe es so, indem ich es oben in der Mainfest-Datei hinzufüge und hinzufüge tools:replace="android:icon", um so auszusehen

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"  // add tools line here 
    package="yourpackage">


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:replace="android:icon"> ///add this line 

.....

</application>

</manifest>

1
funktioniert nicht für Android Studio 2.2 und Gradle 2.2.0.
DysaniazzZ

brillante Antwort
Gundu Bandgar

10

Ich habe den gleichen Fehler, nur dieser Code löst mein Problem, ich möchte mit Ihnen teilen:

in Manifest.xml:

  • Fügen Sie diesen Code oben in Ihre XML-Datei ein:

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

  • Dann hinzugefügt:

    tools:replace="android:icon,android:theme,android:label,android:name" zum Anwendungs-Tag


@ DysaniazzZ, es hängt nicht von Android Studio ab. Siehe Nachrichtenprotokoll.
Adnan Abdollah Zaki

Okay, ich werde sehen.
DysaniazzZ

@Funwise, überprüfen Sie Ihr Nachrichtenprotokoll, ich denke, es hängt nicht von Android Studio.
Adnan Abdollah Zaki

@ adnan9011, mein Problem bestand darin, doppelte Berechtigungen in der Manifest-Datei zu haben.
Darush

9

Die Antwort von shimi_tap ist genug. Was Sie sich merken sollten, ist, dass Sie nur das auswählen, was Sie brauchen. Wählen Sie aus {Symbol, Name, Thema, Bezeichnung}. Ich fügte hinzu tools:replace="android:icon,android:theme", es funktioniert nicht. Ich fügte hinzu tools:replace="android:icon,android:theme,android:label,android:name", es funktioniert nicht. Es funktioniert, wenn ich hinzugefügt habe tools:replace="android:icon,android:theme,android:label". Finden Sie also heraus, was genau der Konflikt in Ihren Manifestdateien ist.


1
funktioniert nicht für Android Studio 2.2 und Gradle 2.2.0.
DysaniazzZ

5

Fügen xmlns:tools="http://schemas.android.com/tools"Sie einfach zu Ihrem Manifest-Tag hinzu, und dann müssen Sie es tools:replace="android:icon" vorher hinzufügen android:icon="@mipmap/ic_launcher".


3

Dieser Fehler tritt auch auf, wenn das minSdk Ihrer App höher ist als das minSdk einer Bibliothek.

app's minSdk >= libraries minSdk

1
Also, was ist die Lösung?
Itzhar

2

ERHALTEN SIE DIE LÖSUNG NACH VIELER ZEIT GOOGLING

Holen Sie sich einfach Ihren ic_launcher und fügen Sie ihn in Ihren Drawables-Ordner ein.

Gehen Sie zu Ihrem Manifest und ändern Sie Android: icon = "@ drawable / ic_launcher"

Bereinigen Sie Ihr Projekt und erstellen Sie es neu

Hoffe es hilft dir


2

Ich hatte dieses Problem beim Ändern des Symbols von Drawable zu Mipmap.

Ich habe nur die Leitung verpasst

tools:replace="android:icon"

im Manifest.


1

Aus irgendeinem Grund ruft Android Studio das App-Symbol nicht gerne aus einem zeichnbaren Ordner auf. In diesem Fall habe ich ein mipmap-Ressourcenverzeichnis unter dem Ordner res erstellt.

Klicken Sie mit der rechten Maustaste auf den Ordner res> new> android resource directory> Ressourcentyp: mipmap. Legen Sie nun ein beliebiges Symbol dort ab und verweisen Sie darauf in die Manifestdatei. Dies zu teilen, da diese Methode für mich funktioniert hat.

android: icon: @ drawable / ic_launcher "

zu

android: icon = "@ mipmap / ic_launcher"


Für mich schien die Einstellung des Stils am besten zu sein android:theme="@style/AppTheme" -> gist.github.com/CrandellWS/4d284b11b5bca3054bddf8f511e49ae9
CrandellWS

1

Wenn nichts davon funktioniert, schließen Sie Android Studio. Gehen Sie auf app / src / main, öffnen Sie die Datei AndroidManifest.xml in einem Texteditor (wie sublime), entfernen / ersetzen Sie die fehlerhaften Zeilen, speichern Sie Android Studio und öffnen Sie es erneut.


1

Wenn ein Attributwert einen Platzhalter enthält (siehe Format unten), wird dieser Platzhalterwert durch die Manifestzusammenführung durch einen injizierten Wert ersetzt. Injizierte Werte werden im build.gradle angegeben. Die Syntax für Platzhalterwerte lautet $ {name}, da @ für Links reserviert ist. Nachdem die letzte Datei zusammengeführt wurde und bevor die resultierende zusammengeführte Android-Manifestdatei ausgeschrieben wurde, werden alle Werte mit einem Platzhalter gegen injizierte Werte ausgetauscht. Ein Build-Bruch wird generiert, wenn ein Variablenname unbekannt ist.

von http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-Build-error


0

Die Antwort von Shimi_tap ist der richtige Weg, um das Problem zu beheben. Wenn Sie das alte Merger-Tool verwenden möchten, können Sie dieses zur Datei build.gradle hinzufügen

android {useOldManifestMerger true}


2
"In 1.0 haben wir die Möglichkeit entfernt, die alte Manifest-Fusion aufzurufen." Tools.android.com/tech-docs/new-build-system/user-guide/…
devgrg

Die Methode useOldManifestMerger () für Argumente [true] für das Projekt ': app' vom Typ org.gradle.api.Project konnte nicht gefunden werden.
DysaniazzZ

0

Bei mir trat dieses Problem nach dem Aktualisieren der Google Play-Dienste auf. Eine der Bibliotheken, die ich verwendet habe, hat diese Bibliothek mit dem "+" in ihrer Gradel-Referenz aufgenommen, wie z

compile 'com.google.android.gms:play-services:+'

Dies führte zu einem Problem, da die von dieser Bibliothek anvisierte Mindestversion geringer war als die von der aktuellen Version von Google Play Services angestrebte. Ich fand dies, indem ich einfach in die Protokolle schaute.


0

In Ihrer .gradleÄnderung MinSDK zum Beispiel:

  • build.gradle (Modul: App)
    • Vor: minSdkVersion 9
    • nach dem: minSdkVersion 14

etc.


0

Ich habe alle oben genannten Lösungen ausprobiert

in Manifest.xml:

  • Fügen Sie diesen Code über Ihrer XML-Datei im Manifest-Tag hinzu:

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

  • Dann hinzugefügt:

    tools:replace="android:icon,android:theme,android:label,android:name" zum Anwendungs-Tag

aber nichts davon hat funktioniert. Ich musste eine XML-Datei löschen, die sich in befand

mipmap-anydpi-v26 / ic_launcher_round.xml

Ich habe die Anwendung in getestet

Samsung Galaxy 8 mit OS Version 8.0.0

ist es wirklich eine Lösung?


0

Fügen Sie in der Datei AndroidManifest.xml dem applicationKnoten Folgendes hinzu :

tools:replace="android:appComponentFactory,android:icon,android:theme,android:label,android:name"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.