Frage Gradle beendet mit Nicht-Null-Exit-Wert 1 (ic_launcher.png: Fehler: Duplicate-Datei)


Ich habe diesen seltsamen Fehler mit Gradle, bitte hilf mir!

/.../app/build/intermediates/res/debug/drawable-xxhdpi-v4/ic_launcher.png:
    error: Duplicate file
/.../app/build/intermediates/res/debug/drawable-xxhdpi/ic_launcher.png:
    Original is here. The version qualifier may be implied.
Error:Execution failed for task ':app:processDebugResources'.
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:
Process 'command '/.../sdk/build-tools/22.0.1/aapt'' finished with non-zero exit value 1

Bevor es normal lief, aber seit ich Klassenpfad gelegt habe com.android.tools.build:gradle:1.2.2Das verursacht mir Fehler


75
2018-04-30 10:32


Ursprung


Antworten:


Gemäß Xavier Durochets Erklärung zu G +Es liegt an einer der Bibliotheken, die du benutzt, um sie zu besitzen ic_launcher.png - was sie natürlich nicht tun sollten (mehr dazu unten).

Wahrscheinlichkeiten sind die zwei Ikonen, die im Protokoll erwähnt werden, sind unterschiedlich: eins ist dein und ein anderes ist höchstwahrscheinlich das allgemeine Android-Symbol, das jemand vergessen hat, von der Bibliothek zu entfernen.

Um die beleidigende Abhängigkeit zu sehen, drücken Sie Ctrl + Shift + N  zweimal (für Nicht-Projekt-Abgleich) und tippen Sie ein ic_launcher.png (Siehe die letzte Zeile auf dem Screenshot) enter image description here

Um das Problem zu umgehen vorübergehend, fügen Sie die hinzu -v4 Qualifier zu Ihren zeichnenden resouce Ordnern (oder verschieben Sie einfach ic_launcher.png zu *dpi-v4 wenn du deine Gründe hast) - Kredite an Xavier Durochet für die Lösung. Sie können Ihr Symbol auch in etwas anderes umbenennen und entsprechende Änderungen vornehmen AndroidManifest.xml

enter image description here

Das eigentliche Problem ist, dass die beleidigende Bibliothek die nutzlosen Icons enthält. Bibliotheken mit eigenen Ressourcen (z. B. ActionBarSherlock oder die Google-eigene Support-Bibliothek v7) verwenden eindeutige Namensschemas, um Kollisionen mit den Ressourcennamen zu vermeiden (abs_, abc_).

Launcher-Icons haben nichts mit einer Bibliothek zu tun, daher ermutige ich Sie, den Autor der Lib, die Sie verwenden, zu benachrichtigen, dass sie vergessen haben, das Redundante zu entfernen ic_launcher.png Dateien.

Auch erwähnenswert, wie Barry Carroll sehr genau in notiert die gleiche DiskussionDas bedeutet nicht, dass Ihre Ressourcen niemals mit denen in der Bibliothek überlappen sollten: Es gibt eine Menge legitim Gründe dafür, die Ressourcen einer Lib mit Ihren eigenen zu überschreiben (z. B. das Aussehen einer von einer Bibliothek bereitgestellten Aktivität zu ändern) und die Ressourcenverschmelzungslogik des Gradle-Plugins erlauben dies absichtlich.

Es ist nur so, dass der Konflikt in diesem speziellen Fall auftritt, wenn die lib auf der Android-Gradle-Plugin-Version (Pre-1.2.2) zurückliegt. In diesem Fall enden Ressourcen in zwei verschiedenen *dpi Ordner - mit und ohne -v4 Qualifier; aber sie befinden sich tatsächlich in demselben Ressourcen- "Bucket", so dass das System sie als doppelt betrachtet.

Dieser Fehler tut bringe das Unbrauchbare hervor ic_launcher.png Override (eigentlich eine Kollision - aufgrund des Glitch), aber diese Situation ist nicht allgemein schlecht für andere Arten von Ressourcen.

I.e. Manchmal überschreiben Sie absichtlich die Ressource einer lib und dieser Fehler wird immer noch dazu führen, dass die Fehlermeldung auftaucht. Dieses Mal gibt es kein echtes Problem mit Ressourcennamen, daher ist die obige temporäre Lösung oder das Zurückhalten der Plugin-Version der richtige Weg.


112
2018-04-30 21:16



Ich hatte das gleiche Problem, als ich eine Drittanbieter-Bibliothek benutzte.RomainPiel / Schimmer-androidBibliothek auf Github)

Um es zu lösen, habe ich meine ic_launcher.png-Dateien aus dem ziehbaren Ordner in den Mipmap-Ordner verschoben. Und Problem gelöst.

enter image description here


27
2018-05-06 08:50



Herabstufung auf com.android.tools.build:gradle:1.1.3 mein Problem geliebt


19
2018-05-01 18:23



Hier ist die allgemeine Methode, um das Problem zu finden:

Lauf

./gradlew build --stacktrace --info

und Sie werden die Details der Fehler finden. Ich habe meinen Fehler gefunden: Eine doppelte Klasse hat einen Fehler auf der obersten Ebene verursacht, und die doppelte wird das Problem lösen.


13
2018-06-13 05:14



Für mich hat ein einfaches "sauberes Projekt" und "Wiederaufbau-Projekt" den Zweck erfüllt.


10
2017-09-04 05:07



Führen Sie ein Upgrade auf 1.2.3 durch, stellen Sie jedoch sicher, dass Ihre Größe und BuildToolsVersion identisch in Ihrem Projekt und den verwendeten Aars sind.

Falls Sie externe Bibliotheken verwenden, in denen Sie die Gradle / Build-Version nicht kontrollieren können: Kontaktieren Sie den Autor oder überprüfen Sie die Quellen selbst. Einige Bibliotheken haben ungenutzte Launcher-Symbole, die diesen Konflikt verursachen. Wenn Sie diese Symbole entfernen, wird Ihr Problem gelöst. Identisch benannte Quellen (z. B. menu.xml) können dieses Problem in seltenen Fällen ebenfalls verursachen. Ein einfacher Workaround wäre, Ihre Ressource umzubenennen.


2
2018-05-20 07:55



Benennen Sie ic_launcher.png einfach in etwas anderes um (z. B. ico_launcher.png)


1
2018-05-25 11:21



In meinem Fall habe ich der Zeichenkette strings.xml ein Apostroph s ('s) hinzugefügt. Überprüfen Sie Jungs für einen solchen Fehler und entfernen Sie es definitiv helfen. Es ist so nervig, dass die IDE den Fehler nicht richtig anzeigen kann und alle Ressourcen nicht mehr synchron sind.

Ich weiß, dass es nicht der Fall ist, der in Frage gestellt wird, aber der Fehler ist ziemlich gleich, d. H. Die Ausführung von Gradle ist fehlgeschlagen.


1
2017-10-25 09:59



Einfach Rename das Image (Rightclick on the Image, Select Refactor and select Rename). Es wird das Problem lösen, da das Problem als eines der Probleme aufgetreten ist library benutzt auch die image mit dem same name.


1
2017-11-03 10:22



Ich hatte das gleiche Problem und was für mich funktionierte, war:

  • Benenne dein Icon um
  • hinzufügen tools:replace="android:icon" zu deinem <application> Tag im Manifest

Sie können nur den ersten Schritt versuchen, aber ich hatte immer noch Probleme beim Zusammenführen der Manifest-Dateien. Auf diese Weise sollte es überschreiben, welche Ressource in der Bibliothek verwendet wurde.


1
2017-11-18 11:16



Folge diesem Link Hier

Oder

Mache Änderungen wie diese.

repositories {
maven {url "https://clojars.org/repo/"}
}
dependencies {
compile 'frankiesardo:icepick:{{latest-version}}'
**provided** 'frankiesardo:icepick-processor:{{latest-version}}'
}

0
2017-10-20 09:59