Al compilar un proyecto específico de Android, y solo en mi máquina con Windows, obtengo un efecto java.nio.BufferOverflowException
de dex. El problema ocurre tanto cuando se usa Eclipse como cuando se usa Ant.
La salida cuando se usa Ant es:
...
[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
Cuando se usa Eclipse, el mensaje es más corto pero similar:
[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.
Como dije, no tengo este problema en mi MacBook, a pesar de que ambos están actualizados a las últimas versiones de las herramientas de compilación de Android: 19.0.0.
Respuestas:
No es necesario degradar las herramientas de compilación a 18.1.1 1 , este problema se soluciona con las herramientas de compilación 19.0.1 .
Si no puede usar 19.0.1 por alguna razón, entonces:
Asegúrese de que el valor de
android:targetSdkVersion
en AndroidManifest.xml coincidatarget=android-<value>
en project.properties . Si estos dos valores no son iguales, la compilación con herramientas de compilación versión 19.0.0 finalizará en BufferOverflowException. FuenteTambién hay alguna indicación de los comentarios en esta publicación de que debe apuntar al menos a 19 (android-19). Deje un comentario si esta solución también funciona si su objetivo es <19.
Así es como se ve la solución para mi proyecto. El problema relacionado de AOSP es # 61710.
1 Si realmente necesita degradar, no necesita desinstalar las herramientas de compilación 19.0.0, simplemente instale 18.1.1 y agréguelo
sdk.buildtools=18.1.1
allocal.properties
archivo.fuente
Prueba qué furgoneta dijo :
Haga clic derecho en su
project
→android tools
→android support library
.Espero que esto ayude :)
fuente
El mismo problema aqui. Volvió a construir herramientas 18.1.1, reinició Eclipse y eso lo solucionó.
fuente
Pude lograr que mi proyecto problemático se construyera agregando esta línea adicional:
... a mi archivo project.properties , que está presente en la raíz de la carpeta del proyecto. Todos los otros enfoques parecían fallar para mí.
fuente
sdk.buildtools
, nosdk.build.tools
, y ese fue el nombre que funcionó para mí.Haga clic derecho en proyecto >> Propiedades >> Android >> API Level 18 funcionó para mí. Pero antes de hacerlo, hice clic derecho en proyecto >> Herramientas de Android >> Agregar biblioteca de soporte y reinicié Eclipse . Puede que tenga que jugar con su nivel de API seleccionado .
fuente
Después de la instalación del nuevo SDK, hay una nueva carpeta, "Dependencias de Android", debajo de su archivo de proyecto. Si hace clic derecho y lo elimina de la ruta de compilación, podrá volver a compilar su proyecto.
fuente
Actualizar
right click your project > android tools > android support library
Limpia tu proyecto e intenta construirlo.
fuente
Tuve el mismo problema después de actualizar a la Revisión 19. Simplemente no olvide actualizar ADT, https://dl-ssl.google.com/android/eclipse/ . Después de esto, pude construir un proyecto con la última revisión.
fuente
Solucioné este problema sin descargar la biblioteca de soporte o revertir las herramientas de compilación a 18.1.1. Simplemente cambié el nivel de API a 16+ y el problema desapareció . Espero que ayude.
fuente
Ninguna de las otras soluciones aquí funcionó para mí después de actualizar a Android Studio 0.4.0 y Gradle 1.9.
Resolví el problema descargando Build Tools 19.0.1 y actualizando la siguiente línea en mis archivos build.gradle:
a
fuente
Para aquellos que enfrentan problemas con IntelliJ IDEA 13, desinstale Build Tools 19.
fuente
Tuve el mismo problema con la versión de destino
19
en ambosproject.properties
yAndroidManifest.xml
con Ant.Solucionado por:
Android SDK Build-Tools 19.0.1
Android SDK Build-Tools 19.0.2
Creo que @ Al-Kathiri-Khalid es acertada. El problema solo se debe a la falta de soporte para el nivel de API en Build Tools.
fuente
Tuve el mismo problema, aunque mi proyecto no utilizó la biblioteca de soporte. Agregar libs / android-support-v4.jar al proyecto solucionó el problema sin necesidad de revertir las herramientas de compilación desde v19.
fuente
Resolví este problema. Simplemente haga este cambio en el archivo de propiedades del proyecto:
Y en el archivo de manifiesto:
fuente
Agregue el archivo de la Biblioteca en el proyecto .. Proyecto-> haga clic con el botón derecho-> Propiedades-> android-> Biblioteca-> haga clic en Agregar y seleccione el Proyecto de la Biblioteca y aplique aplicar y ok ... luego, limpie el proyecto y vuelva a ejecutarlo ... si quiere reiniciar el eclipse ..
Y también, a veces, necesita actualizar las herramientas de compilación del SDK de Android.
fuente
Lo que funcionó para mí fue esto: abrí el archivo project.properties desde la raíz de mi proyecto y cambié
target=android-8
atarget=android-17
fuente
java.nio.BufferOverflowException durante el error dex Esto significa que no tiene la API de soporte para ese nivel por lo tanto, la compilación falla, hay varias formas de solucionar esto.
Verifique que su archivo de manifiesto use-sdk android: minSdkVersion = "4" y android: targetSdkVersion = "14"
Cualquiera de los siguientes solucionará el problema:
fuente
Eliminé el SDK de Android anterior y Eclipse . Instalé el paquete ADT y funciona ...
Esto solucionó el problema de BufferOverflow en Dex que comenzó después de que obtuve la API 19. Anteriormente estaba usando Eclipse con Android SDK instalado como un paquete adicional.
fuente
Haga clic derecho en Proyecto >> Propiedades >> Android y seleccione Nivel de API superior a 15
O
Agregue google-play-services_lib a su proyecto haciendo clic derecho en el proyecto y seleccionando Proyecto >> Propiedades >> Android >> Agregar
fuente