Laut Xavier Durochets Erklärung zu G + liegt es daran, dass eine der Bibliotheken, die Sie verwenden, eine eigene hat ic_launcher.png
- was sie natürlich nicht sollten (mehr dazu unten).
Wahrscheinlich unterscheiden sich die beiden im Protokoll genannten Symbole: eines gehört Ihnen und eines ist höchstwahrscheinlich das generische Android-Symbol, das jemand vergessen hat, aus der Bibliothek zu entfernen.
Um die störende Abhängigkeit zu sehen, drücken Sie Ctrl + Shift + N
zweimal (für Nicht-Projekt-Matching) und geben Sie ein ic_launcher.png
(siehe letzte Zeile auf dem Screenshot).
Um das Problem vorübergehend -v4
zu umgehen , fügen Sie das Qualifikationsmerkmal zu Ihren zeichnbaren Ressourcenordnern hinzu (oder wechseln Sie einfach ic_launcher.png
zu, *dpi-v4
wenn Sie Ihre Gründe haben) - Gutschriften an Xavier Durochet für die Lösung. Sie können Ihr Symbol auch einfach in etwas anderes umbenennen und entsprechende Änderungen an vornehmenAndroidManifest.xml
Das eigentliche Problem ist, dass die beleidigende Bibliothek die nutzlosen Symbole enthält. Bibliotheken mit eigenen Ressourcen (wie ActionBarSherlock oder Googles eigene Support v7-Bibliothek) verwenden unterschiedliche Namensschemata, um Kollisionen mit Ihren Ressourcennamen ( abs_
, abc_
) zu vermeiden .
Launcher-Symbole haben nichts damit zu tun, sich in einer Bibliothek zu befinden. Ich empfehle Ihnen daher, den Autor der von Ihnen verwendeten Bibliothek darüber zu informieren, dass er vergessen hat, die redundanten ic_launcher.png
Dateien zu entfernen .
Erwähnenswert ist auch , wie Barry Carroll in derselben Diskussion sehr genau bemerkte , dass Ihre Ressourcen niemals die in der Bibliothek überschneiden sollten: Es gibt viele legitime Gründe, die Ressourcen einer Bibliothek mit Ihren eigenen zu überschreiben (z. B. das Aussehen zu ändern Dies ermöglicht dies absichtlich durch die Zusammenführungslogik des Gradle-Plugins.
Es ist nur so, dass in diesem speziellen Fall der Konflikt auftritt, wenn die Bibliothek in der Android Gradle Plugin-Version (vor 1.2.2) zurückliegt. In diesem Fall landen Ressourcen in zwei verschiedenen *dpi
Ordnern - mit und ohne -v4
Qualifizierer. Sie befinden sich jedoch tatsächlich in derselben Ressource "Bucket", sodass das System sie als doppelt betrachtet.
Dieser Fehler führt zwar zu einer nutzlosen ic_launcher.png
Übersteuerung (eigentlich eine Kollision - aufgrund des Fehlers), aber diese Situation ist für andere Arten von Ressourcen nicht allgemein schlecht.
Das heißt, manchmal überschreiben Sie absichtlich die Ressource einer Bibliothek, und dieser Fehler führt immer noch dazu, dass die Fehlermeldung angezeigt wird. Dieses Mal gibt es kein wirkliches Problem mit Ressourcennamen. Daher ist die obige temporäre Lösung oder das Zurückhalten der Plugin-Version der richtige Weg.