Android dex proporciona una BufferOverflowException al construir

Al comstackr un proyecto específico de Android, y solo en mi máquina con Windows, obtengo una java.nio.BufferOverflowException durante dex. El problema ocurre tanto al usar Eclipse como al usar 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 

Al usar 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, aunque ambos están actualizados a las últimas versiones de las herramientas de Build de Android: 19.0.0.

No es necesario degradar las herramientas de comstackción a 18.1.1 1 , este problema se soluciona con las herramientas de comstackción 19.0.1 .

Si no puede usar 19.0.1 por alguna razón:

Asegúrese de que el valor de android:targetSdkVersion en AndroidManifest.xml coincida con target=android- en project.properties . Si estos dos valores no son los mismos, comstackr con herramientas de comstackción versión 19.0.0 terminará en BufferOverflowException. Fuente

También hay alguna indicación de los comentarios en esta publicación que debe apuntar al menos a 19 (android-19). Por favor, deje un comentario si esta solución también funciona si su objective es <19.

Así es como la solución busca mi proyecto. El problema relacionado con AOSP es # 61710.

1 Si realmente necesita degradar, no necesita desinstalar las herramientas de comstackción 19.0.0, simplemente instale 18.1.1 y agregue sdk.buildtools=18.1.1 al archivo local.properties .

Prueba lo que dice van :

Haga clic derecho en su projectandroid tools android support libraryandroid support library .

Espero que esto ayude 🙂

El mismo problema aqui. Revertido a las herramientas de comstackción 18.1.1, se reinició Eclipse y eso lo solucionó.

Pude construir mi proyecto problemático agregando esta línea adicional:

 sdk.build.tools=18.1.1 

… a mi archivo project.properties , que está presente en la raíz de la carpeta del proyecto. Todos los demás enfoques parecieron fallarme.

Haga clic derecho en el proyecto >> Propiedades >> Android >> API Nivel 18 funcionó para mí. Pero antes de hacerlo, hice clic derecho en el proyecto >> Herramientas de Android >> Añadir biblioteca de soporte y reinicié Eclipse . Puede que tenga que jugar con su nivel de API seleccionado.

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 comstackción, podrá volver a crear su proyecto.

Actualizar

right click your project > android tools > android support library

Limpia tu proyecto e intenta construir.

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.

Solucioné este problema sin descargar la biblioteca de soporte ni revertir las herramientas de comstackción a 18.1.1. Simplemente cambié el nivel de API a 16+ y el problema desapareció . Espero que ayude

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:

 buildToolsVersion '19.0.0' 

a

 buildToolsVersion '19.0.1' 

Para los que tienen problemas con IntelliJ IDEA 13, desinstale Build Tools 19.

Tuve el mismo problema con la versión de destino 19 en project.properties y AndroidManifest.xml con Ant.

Solucionado por:

  • Desinstalado Android SDK Build-Tools 19.0.1
  • Android SDK Build-Tools 19.0.2 instalación de Android SDK Build-Tools 19.0.2

Creo que @ Al-Kathiri-Khalid es perfecta. El problema solo se debe a la falta de soporte para el nivel de API en herramientas de comstackción.

Tuve el mismo problema, aunque mi proyecto no usó la biblioteca de soporte. Agregar libs / android-support-v4.jar al proyecto solucionó el problema sin necesidad de revertir las herramientas de comstackción desde v19.

Resolví este problema. Simplemente haga este cambio en el archivo de propiedades del proyecto:

 target=android-18 sdk.build.tools=18.1.1 

Y en el archivo manifiesto:

 uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" 

Agregue el archivo de la Biblioteca en el proyecto. Proyecto-> haga clic derecho-> Propiedades-> Android-> Biblioteca-> haga clic en Agregar y seleccione el Proyecto de la Biblioteca y proporcione aplicar y aceptar … luego, limpie el proyecto y vuelva a ejecutar … si quiero reiniciar el eclipse …

Y también, a veces, necesita actualizar las herramientas de comstackción de Android SDK.

Lo que funcionó para mí fue esto: abrí el archivo project.properties desde la raíz de mi proyecto y cambié target=android-8 a target=android-17

java.nio.BufferOverflowException durante el error from dex Esto significa que no tiene la API de soporte para ese nivel, por lo tanto, la comstackción falla, existen varias maneras de solucionarlo.

Compruebe su archivo de manifiesto usa-sdk android: minSdkVersion = “4” y android: targetSdkVersion = “14”

Cualquiera de los siguientes resolverá el problema:

  • Descargue el nivel de API requerido (esto puede llevar tiempo) y vuelva a ejecutar su aplicación
  • Solución sucia rápida: cambie su objective del proyecto en project.properties a su nuevo objective target = android-4
  • Solución de limpieza rápida, cambie SdkVersion en su manifiesto y Limpie su proyecto para agregar los cambios a su project.properties (Mi favorito)

Eliminé el Android SDK y Eclipse anteriores . Instalé el paquete ADT y funciona …

Esto solucionó el problema de BufferOverflow en Dex que comenzó después de que obtuve API 19. Anteriormente estaba usando Eclipse con Android SDK instalado como un paquete adicional.

Haga clic derecho en Proyecto >> Propiedades >> Android y seleccione Nivel de API mayor que 15

O

Agregue google-play-services_lib a su proyecto haciendo clic derecho en el proyecto y seleccionando Proyecto >> Propiedades >> Android >> Agregar