Atunci când compilarea unui anumit proiect Android, și doar pe calculator cu Windows, am primit un java.nio.BufferOverflowException
timpul din dex. Problema apare când se folosesc Eclipse și atunci când se utilizează Ant.
Ieșire atunci când se utilizează Ant este:
...
[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
Atunci când se utilizează Eclipse mesajul este mai scurt, dar similare:
[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.
Cum am spus, eu nu't au această problemă pe meu MacBook, chiar dacă ambele sunt modernizate la cele mai recente versiuni de Android, Construi instrumente: 19.0.0.
Nu este nevoie să downgrade de a construi instrumente înapoi la 18.1.11, această problemă este fix cu construiască instrumente 19.0.1.
Dacă poți't folosi 19.0.1 pentru un motiv oarecare, atunci:
Asigurați-vă că valoarea de android:targetSdkVersionîn **AndroidManifest.xml** se potrivește
target=android-
Există, de asemenea, un indiciu de la comentarii pe acest post de care aveți nevoie pentru a viza cel puțin 19 (android-19). Vă rugăm să lăsați un comentariu dacă această soluție funcționează, de asemenea, dacă ținta ta este < 19.
Acesta este modul în care arata fix pentru proiectul meu. Conexe AOSP problemă este #61710.
1 Dacă aveți într-adevăr nevoie pentru a downgrade, nu't nevoie pentru a dezinstala construi instrumente 19.0.0, pur și simplu instalați 18.1.1 și se adaugă `sdk.buildtools=18.1.1 " la " locale.proprietăți dosarul lui.
Am fost capabil de a obține problema mea proiectului de a construi prin adăugarea de această linie suplimentar:
sdk.build.tools=18.1.1
...să-mi proiect.proprietăți fișier, care este prezent în rădăcina de director de proiect. Toate celelalte abordări părea să eșueze pentru mine.
După instalarea noului SDK, acolo este un folder nou, "Android Dependențe", în fișierul proiectului. Dacă faceți clic dreapta și scoateți-l din a construi calea, va fi din nou capabil de a construi proiectul.
Am avut aceeași problemă după actualizarea la Revizuirea 19. Doar nu uitați să actualizați ADT, https://dl-ssl.google.com/android/eclipse/. După aceasta, am fost capabil de a construi proiectul cu cea mai recentă revizuire.
Niciuna dintre celelalte soluții aici a lucrat pentru mine, după actualizarea la Android Studio 0.4.0 și Gradle 1.9.
Am rezolvat problema prin descărcarea Construi Instrumente 19.0.1 și actualizarea următoarea linie în a construi.gradle fișiere:
buildToolsVersion '19.0.0'
pentru a
buildToolsVersion '19.0.1'
Avut aceeasi problema cu țintă versiune 19
pe ambele proiect.proprietăți " și " AndroidManifest.xml cu Ant.
Fix de:
SDK Android Build-Instrumente 19.0.1
Eu cred ca @Al-Kathiri-Khalid este la fața locului pe. Problema este doar din cauza lipsei de suport pentru API de nivel în a Construi Unelte.
Am avut aceeași problemă, deși proiectul meu nu a folosit support library. Adăugarea libs/android-support-v4.jar la proiect a lucrat în jurul valorii de această problemă, fără a fi nevoie pentru a reveni la construirea de instrumente înapoi la v19.
Am rezolvat această problemă. Doar face această schimbare în proiect properties:
target=android-18
sdk.build.tools=18.1.1
Și în fișierul manifest:
uses-sdk android:minSdkVersion="8"
android:targetSdkVersion="18"
Click dreapta pe Proiect>>Proprietăți>>Android și selectați API de Nivel mai mare de 15
SAU
Adăugați google-play-services_lib pentru proiectul dumneavoastră prin clic-dreapta pe proiect și selectarea Proiectului>>Proprietăți>>Android>>Adauga
Adăugați fișierul Bibliotecă în proiect.. Proiect->click dreapta->Proprietăți->android->Biblioteca-> faceți clic pe Adăugare și selectați Biblioteca de Proiect și dau apply si ok.. apoi, curățați de proiect și a alerga din nou.. dacă doriți să reporniți eclipsa..
Și, de asemenea, uneori, au nevoie pentru a actualiza Android SDK construi instrumente..
java.nio.BufferOverflowException timpul din dex eroare Acest lucru înseamnă că don't au sprijinirea API pentru acest nivel prin urmare, nu a construi, există un număr de moduri în care puteți remedia acest lucru.
Verificați fișierul manifest folosește-sdk android:minSdkVersion="4" și android:targetSdkVersion="14"
Oricare dintre cele de mai jos va rezolva problema:-