Ich versuche, meine appcompat-v7 in Android Studio-Projekt von v20.0.0 auf 21.0.0 für die Verwendung von Material-Design-Komponente zu aktualisieren, aber ich bekomme immer den gleichen Fehler:
"Fehler: Attribut" color "wurde bereits definiert"
Ich habe keine Idee, was zu tun ist, um diesen Fehler zu beheben, ich habe im Internet gesucht, aber ich kann die Antwort nicht bekommen. Hier ist meine Größe:
%Vor%Hier ist der Pfad, in dem der Konflikt besteht
%Vor%und das ist ein anderer Fehler:
%Vor%Mein Problem wurde gelöst, nachdem ich die Antwort von @petey gelesen hatte. Wenn Sie die in der Fehlermeldung angezeigte Zeile betrachten, können Sie genau bestimmen, welches Attribut ein Problem verursacht.
In meinem Fall war es ein Attribut namens color
in einer benutzerdefinierten attrs
xml-Datei. Diese benutzerdefinierte Ansicht wurde nicht verwendet, daher habe ich gerade diese Zeile und das Problem kommentiert.
Mögliche Lösungsschritte
Überprüfen Sie die Fehlerausgabe, um den Pfad zur Datei- und Zeilennummer zu finden, der Probleme verursacht
Gehen Sie zu dieser Datei über Ihren Dateisystem-Explorer und suchen Sie nach der betreffenden Zeile
Diese Zeile sollte angeben, welche (benutzerdefinierte) Ansicht ein Attribut hat, das bereits irgendwo definiert ist.
Suchen Sie im Projekt in Ihrer IDE nach diesem Attribut, und wenn es nicht verwendet wird, ändern Sie andernfalls den Namen, wenn es verwendet wird.
Sie sollten diese Zeile entfernen
%Vor%und verwenden Sie die gleiche Abhängigkeit, die appcompat verwendet:
%Vor%Ich schlage auch vor, die 21.0.3 anstelle von 21.0 zu fixieren. +
Gradel Resource Merger führt alle Ressourcenordner aus allen Abhängigkeiten zusammen und platziert sie in einem einzelnen Ordner. Falls es Dubletten gibt, wird der Build-Prozess fehlschlagen.
Glücklicherweise, wenn Sie unter Ausgabe: Label nachsehen, finden Sie den richtigen Pfad zu dem Problem.
Hier ist ein Beispiel
in Ihrem Fall ist es android-support-v7-appcompat\res\values\attrs.xml:476: error: Attribute "attributeName" has already been defined
Sie können Ihr Projekt auch über die Befehlszeile erstellen und den richtigen Pfad abrufen. attributeName Innerhalb der Datei values \ attrs.xml in Zeile 476 finden Sie eine Eigenschaft namens "attributeName". Höchstwahrscheinlich ist es Ihr eigenes styled, das Sie ändern müssen, um das Duplikat loszuwerden.
Wenn Sie nun den Grund kennen, können Sie diese Eigenschaft in Ihrem Projektmodul finden und durch einen anderen Namen ersetzen.
In einigen Fällen könnte dies Ihnen helfen. Dies ist jedoch keine spezifische Antwort.
%Vor%Es kann viele attributbezogene Markierungen auf einem bestimmten Element geben, um alle in Konflikt stehenden Attribute aufzulösen.
%Vor%Der standardmäßige implizite Modus für das Attribut generiert einen Fehler, wenn die Deklaration der niedrigeren Priorität mit einem anderen Wert zusammengeführt wird.
%Vor%Entfernen Sie beim Zusammenführen die X-, Y- und Z-Attribute aus einer Deklaration mit niedrigerer Priorität.
%Vor%Ersetze die x, y, z-Attribute von jeder Deklaration mit niedrigerer Priorität durch den angegebenen Wert (muss auf demselben Knoten vorhanden sein).
REF: Ссылка