Beim Kompilieren eines bestimmten Android-Projekts und nur auf meinem Windows-Computer erhalte ich ein java.nio.BufferOverflowException
während von dex. Das Problem tritt sowohl bei Verwendung von Eclipse als auch bei Verwendung von Ant auf.
Die Ausgabe bei Verwendung von Ant ist:
...
[dex] Pre-Dexing C:\MyProject\libs\android-support-v4.jar -> android-support-v4-5f5341d3c1b10a79d7d93f9c1e64421e.jar
[dex] Converting compiled files and external libraries into C:\MyProject\bin\classes.dex...
[dx]
[dx] UNEXPECTED TOP-LEVEL EXCEPTION:
[dx] java.nio.BufferOverflowException
[dx] at java.nio.Buffer.nextPutIndex(Buffer.java:499)
[dx] at java.nio.HeapByteBuffer.putShort(HeapByteBuffer.java:296)
[dx] at com.android.dex.Dex$Section.writeShort(Dex.java:818)
[dx] at com.android.dex.Dex$Section.writeTypeList(Dex.java:870)
[dx] at com.android.dx.merge.DexMerger$3.write(DexMerger.java:437)
[dx] at com.android.dx.merge.DexMerger$3.write(DexMerger.java:423)
[dx] at com.android.dx.merge.DexMerger$IdMerger.mergeUnsorted(DexMerger.java:317)
[dx] at com.android.dx.merge.DexMerger.mergeTypeLists(DexMerger.java:423)
[dx] at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:163)
[dx] at com.android.dx.merge.DexMerger.merge(DexMerger.java:187)
[dx] at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
[dx] at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
[dx] at com.android.dx.command.dexer.Main.run(Main.java:230)
[dx] at com.android.dx.command.dexer.Main.main(Main.java:199)
[dx] at com.android.dx.command.Main.main(Main.java:103)
BUILD FAILED
C:\Users\Jaap\android-sdks\tools\ant\build.xml:892: The following error occurred while executing this line:
C:\Users\Jaap\android-sdks\tools\ant\build.xml:894: The following error occurred while executing this line:
C:\Users\Jaap\android-sdks\tools\ant\build.xml:906: The following error occurred while executing this line:
C:\Users\Jaap\android-sdks\tools\ant\build.xml:284: null returned: 2
Bei Verwendung von Eclipse ist die Nachricht kürzer, aber ähnlich:
[2013-11-01 14:29:44] APK file is not created for Project:
[2013-11-01 14:29:46 - Dex Loader] Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
[2013-11-01 14:29:46 - MyProject] Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
Wie gesagt, ich habe dieses Problem nicht auf meinem MacBook, obwohl beide auf die neuesten Versionen der Android Build-Tools aktualisiert wurden: 19.0.0.
Antworten:
Die Build-Tools müssen nicht auf 18.1.1 1 zurückgestuft werden. Dieses Problem wurde mit den Build-Tools 19.0.1 behoben .
Wenn Sie 19.0.1 aus irgendeinem Grund nicht verwenden können, dann:
Achten Sie darauf , dass der Wert
android:targetSdkVersion
in AndroidManifest.xml Spieletarget=android-<value>
in project.properties . Wenn diese beiden Werte nicht identisch sind, endet das Erstellen mit Build-Tools der Version 19.0.0 in der BufferOverflowException. QuelleEs gibt auch Hinweise aus Kommentaren zu diesem Beitrag, dass Sie mindestens 19 (Android-19) als Ziel haben müssen. Bitte hinterlassen Sie einen Kommentar, wenn diese Lösung auch funktioniert, wenn Ihr Ziel <19 ist.
So sieht das Update für mein Projekt aus. Das zugehörige AOSP-Problem ist # 61710.
1 Wenn Sie wirklich ein Downgrade durchführen müssen, müssen Sie die Build-Tools 19.0.0 nicht deinstallieren. Installieren Sie einfach 18.1.1 und fügen Sie
sdk.buildtools=18.1.1
sie derlocal.properties
Datei hinzu.quelle
Versuchen Sie, was van gesagt hat:
Klicken Sie mit der rechten Maustaste auf
project
→android tools
→android support library
.Hoffe das hilft :)
quelle
Selbes Problem hier. Zurückgesetzt, um Tools 18.1.1 zu erstellen, Eclipse neu gestartet und das Problem behoben.
quelle
Durch Hinzufügen dieser zusätzlichen Zeile konnte ich mein Problemprojekt erstellen:
... in meine Datei project.properties , die sich im Stammverzeichnis des Projektordners befindet. Alle anderen Ansätze schienen für mich zu scheitern.
quelle
sdk.buildtools
, nichtsdk.build.tools
, und das war der Name, der für mich funktioniert hat.Klicken Sie mit der rechten Maustaste auf Projekt >> Eigenschaften >> Android >> API Level 18 hat für mich funktioniert. Aber bevor ich das getan habe, habe ich mit der rechten Maustaste auf Projekt >> Android Tools >> Support Library hinzufügen geklickt und Eclipse neu gestartet . Möglicherweise müssen Sie mit der ausgewählten API- Ebene herumspielen .
quelle
Nach der Installation des neuen SDK befindet sich unter Ihrer Projektdatei der neue Ordner "Android-Abhängigkeiten". Wenn Sie mit der rechten Maustaste klicken und es aus dem Erstellungspfad entfernen, können Sie Ihr Projekt erneut erstellen.
quelle
Aktualisieren
right click your project > android tools > android support library
Bereinigen Sie Ihr Projekt und versuchen Sie es zu bauen.
quelle
Nach dem Update auf Revision 19 hatte ich das gleiche Problem. Vergessen Sie nicht, ADT unter https://dl-ssl.google.com/android/eclipse/ zu aktualisieren . Danach konnte ich ein Projekt mit der neuesten Revision erstellen.
quelle
Ich habe dieses Problem behoben, ohne die Support-Bibliothek herunterzuladen oder die Build-Tools auf 18.1.1 zurückzusetzen. Ich habe einfach die API-Stufe auf 16+ geändert und das Problem ist verschwunden . Hoffe es wird helfen.
quelle
Keine der anderen Lösungen hier hat nach dem Upgrade auf Android Studio 0.4.0 und Gradle 1.9 für mich funktioniert.
Ich habe das Problem behoben, indem ich Build Tools 19.0.1 heruntergeladen und die folgende Zeile in meinen build.gradle-Dateien aktualisiert habe:
zu
quelle
Deinstallieren Sie Build Tools 19, wenn Probleme mit IntelliJ IDEA 13 auftreten.
quelle
Hatte das gleiche Problem mit der Zielversion
19
auf beidenproject.properties
undAndroidManifest.xml
mit Ant.Es wurde behoben durch:
Android SDK Build-Tools 19.0.1
Android SDK Build-Tools 19.0.2
Ich denke, @ Al-Kathiri-Khalid ist genau richtig. Das Problem ist nur auf die fehlende Unterstützung für die API-Ebene in Build Tools zurückzuführen.
quelle
Ich hatte das gleiche Problem, obwohl mein Projekt die Support-Bibliothek nicht verwendete. Durch Hinzufügen von libs / android-support-v4.jar zum Projekt wurde das Problem umgangen, ohne dass die Build-Tools von Version 19 zurückgesetzt werden mussten.
quelle
Ich habe dieses Problem gelöst. Nehmen Sie diese Änderung einfach in der Projekteigenschaftendatei vor:
Und in der Manifestdatei:
quelle
Fügen Sie die Bibliotheksdatei im Projekt hinzu. Projekt-> Rechtsklick-> Eigenschaften-> Android-> Bibliothek-> Klicken Sie auf Hinzufügen und wählen Sie das Bibliotheksprojekt aus und geben Sie Übernehmen und OK an. Bereinigen Sie dann das Projekt und führen Sie es erneut aus will die Sonnenfinsternis neu starten ..
Außerdem müssen manchmal die Build-Tools für Android SDK aktualisiert werden.
quelle
Was für mich gearbeitet , war dies: Ich öffnete die project.properties Datei aus dem Stamm meines Projektes und geändert ,
target=android-8
umtarget=android-17
quelle
java.nio.BufferOverflowException während eines Dex-Fehlers Dies bedeutet, dass Sie nicht über die unterstützende API für diese Ebene verfügen. Daher schlägt der Build fehl. Es gibt verschiedene Möglichkeiten, dies zu beheben.
Überprüfen Sie Ihre Manifestdatei using-sdk android: minSdkVersion = "4" und android: targetSdkVersion = "14"
Eine der folgenden Möglichkeiten behebt das Problem: -
quelle
Ich habe das vorherige Android SDK und Eclipse entfernt . Ich habe das ADT- Bundle installiert und es funktioniert ...
Dies behebt das Problem von BufferOverflow auf Dex, das gestartet wurde, nachdem ich API 19 erhalten hatte. Ich habe zuvor Eclipse mit Android SDK als Add-On-Paket verwendet.
quelle
Klicken Sie mit der rechten Maustaste auf Projekt >> Eigenschaften >> Android und wählen Sie API-Level größer als 15
ODER
Fügen Sie Ihrem Projekt google-play-services_lib hinzu, indem Sie mit der rechten Maustaste auf Projekt klicken und Projekt >> Eigenschaften >> Android >> Hinzufügen auswählen
quelle