Frage "Die Konvertierung in Dalvik-Format ist mit Fehler 1 fehlgeschlagen" auf externen JAR


In meiner Android-Anwendung in Eclipse bekomme ich den folgenden Fehler.

UNERWARTETE AUSNAHME:
  java.lang.IllegalArgumentException: bereits hinzugefügt: Lorg / xmlpull / v1 / XmlPullParser;
  ....
  Die Konvertierung in das Dalvik-Format ist mit Fehler 1 fehlgeschlagen

Dieser Fehler tritt nur auf, wenn ich meinem Projekt eine bestimmte externe JAR-Datei hinzufüge. Ich habe lange nach der möglichen Lösung gesucht, aber keine der möglichen Lösungen funktioniert. Ich habe sogar versucht, auf Android 1.6 statt auf Version 1.5 zu wechseln (die aktuelle Version, die ich verwende).


880


Ursprung


Antworten:


Gehe zu Projekt »Eigenschaften» Java Build Path »Bibliotheken und entferne alle außer dem" Android X.Y "(in meinem Fall Android 1.5). OK klicken. Gehen Sie zu Projekt »Säubern» Ausgewählte Projekte bereinigen »Wählen Sie Ihr Projekt und klicken Sie auf OK. Das sollte funktionieren.

Es ist auch möglich, dass Sie eine JAR-Datei irgendwo in Ihren Projektordnern haben (ich hatte die Admob JAR-Datei in meinen src-Ordner kopiert) und DANN als Java-Pfadbibliothek hinzugefügt. Es wird nicht im Paket-Explorer angezeigt, so dass Sie es nicht bemerken, aber es wird zweimal gezählt, was den gefürchteten Dalvik-Fehler verursacht 1.

Ein weiterer möglicher Grund könnten Paketnamenskonflikte sein. Angenommen, Sie haben ein Paket com.abc.xyz und eine Klasse namens A.java innerhalb dieses Pakets und eines anderen Bibliotheksprojekts (das zur Abhängigkeit dieses Projekts hinzugefügt wird), das dasselbe enthält com.abc.xyz.A.java, dann erhalten Sie genau den gleichen Fehler. Dies bedeutet, dass Sie mehrere Referenzen auf dieselbe Datei haben A.java und kann es nicht richtig bauen.

Auf andere Weise kann dies geschehen, wenn Sie versehentlich oder wissentlich etwas in der Klassenpfaddatei manuell bearbeiten / hinzufügen. In bestimmten Fällen können wir den Pfad android.jar manuell zur Klassenpfaddatei hinzufügen, um java doc zu generieren. Beim Entfernen des nach javadoc generierten Code funktioniert einwandfrei. Bitte überprüfen Sie dies auch, wenn noch einer auftritt.


821



Ich habe das Problem gelöst.

Dies ist ein JAR-Dateikonflikt.

Es scheint, dass ich zwei JAR-Dateien auf meinem Buildpath habe, die dasselbe Paket und dieselben Klassen enthalten.

smack.jar und android_maps_lib-1.0.2

Durch das Löschen dieses Pakets aus einer der JAR-Dateien wurde das Problem behoben.


270



Windows 7 Lösung:

Bestätigt, dass das Problem durch die ProGuard-Befehlszeile in der Datei verursacht wird
[Android SDK-Installationsverzeichnis] ​​\ tools \ proguard \ bin \ proguard.bat

Bearbeiten Sie die folgende Zeile wird das Problem lösen:

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*

zu

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9

125



Sie können dieses Problem einfach lösen (mit Eclipse Android Developer Tools, Build: v22.0.1-685705), indem Sie Menü> "Projekt"> "Automatisch erstellen" deaktivieren, während Sie die (un) signierte Android-Anwendung exportieren. Danach vergiss nicht, es wieder einzuschalten.


94



Wenn Sie ADT Revision 12+ haben, sollten Sie Ihr Programm von 4.4 -> 4.6 (wie beschrieben) aktualisieren Hier). Außerdem sollten Sie die Datei ... \ bin \ proguard.bat in der ursprünglichen Form belassen.

Laden Sie es einfach aus dem Internet herunter und kopieren Sie den lib-Ordner vom heruntergeladenen Paket in das:

[Android SDK-Installationsverzeichnis] ​​\ tools \ proguard \ lib


53



BEARBEITEN (neue Lösung):

Es sieht so aus, als wäre die vorherige Lösung nur ein Bypass. Ich habe es geschafft, das Problem endgültig zu beheben: In meinem Fall gab es in meinem Projekt und in dem Facebook-Projekt, auf das in meinem Projekt verwiesen wird, eine Abweichung in android-support-v4-Dateien.

Ich habe diesen Fehler gefunden, indem ich Lint Check (Android Tools / Run Lint: Auf häufige Fehler prüfen) durchgeführt habe

Meine vorherige Lösung:

Ich habe jede mögliche Lösung auf dieser Seite versucht - nichts hat geholfen !!!

Endlich habe ich hier eine Antwort gefunden: https://groups.google.com/forum/#!topic/actionbarsherlock/drzI7pEvKd4

Einfache Schritte:

Gehe zu Projekt -> deaktiviere das Kontrollkästchen Automatisch erstellen

Gehe zu Projekt -> Säubern ..., säubere sowohl das Bibliotheksprojekt als auch dein   App-Projekt

Exportieren Sie Ihre App als signiertes APK, während "Automatisch erstellen" noch immer aktiv ist   behindert


40



Hier ist ein anderes Szenario und eine Lösung:

Wenn Sie vor kurzem auf dieses Problem stoßen, nachdem Sie den ADT für Eclipse aktualisiert haben:

  1. Suchen Sie in Ihrem App-Projekt nach verknüpften Quellordnern, die auf Ihre Bibliotheksprojekte verweisen (sie haben Namen im Format "LibraryName_src").
  2. Wähle alle Projekte aus, klicke mit der rechten Maustaste und wähle "Pfad erstellen"->"Aus dem Build-Pfad entfernen".
  3. Wählen "Heben Sie auch die Verknüpfung des Ordners mit dem Projekt auf", und klicken Sie auf"Ja".
  4. Bereinigen Sie das Projekt, erstellen Sie es neu und stellen Sie es erneut bereit.

Es scheint der Grund dafür zu sein, dass einige frühere Versionen von ADT die Quellordner von Bibliotheksprojekten mit den "untergeordneten" Projekten verlinkt haben und die aktuelle ADT / Dex-Kombination nicht mehr mit dieser Lösung kompatibel ist.

EDIT: Dies wird speziell durch einen Android Dev Blog-Eintrag bestätigt dieses - siehe Absatz 8.


30



Gehen Sie zu Projekt und deaktivieren Sie dann "Automatisch erstellen". Versuchen Sie dann, das Projekt zu exportieren, und der Fehler ist verschwunden.


29



Dies kann auch verursacht werden, wenn Sie hinzugefügt haben Android.jar Datei zu Ihrem Build-Pfad, möglicherweise durch eine versehentliche schnelle Lösung in Eclipse. Entfernen Sie es mit der rechten Maustaste Projekt -> Pfad erstellen -> Build-Pfad konfigurieren -> android.jar, Löschen.


27