174 votes

Dex Android donne une BufferOverflowException lors de la construction

Lors de la compilation spécifique du projet Android, et uniquement sur ma machine Windows, j'obtiens un java.nio.BufferOverflowException au cours de dex. Le problème se produit lors de l'utilisation d'Eclipse et lors de l'utilisation de Ant.

La sortie lors de l'utilisation de Ant est:

...
  [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

Lors de l'utilisation d'Eclipse, le message est plus court, mais de même:

[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.

Comme je l'ai dit, je n'ai pas ce problème sur mon MacBook, même si ils sont tous les deux mis à niveau vers la version la plus récente d'Android outils de construction: 19.0.0.

230voto

Flow Points 8018

Pas besoin de rétrograder les outils de construction de retour à 18.1.11, ce problème est corrigé avec la version des outils de 19.0.1.

Si vous ne pouvez pas utiliser 19.0.1 pour certaines raisons:

Assurez-vous que la valeur de android:targetSdkVersion dans AndroidManifest.xml les matchs target=android-<value> dans le projet.les propriétés. Si ces deux valeurs ne sont pas les mêmes, la construction avec des outils de construction de la version 19.0.0 fin à BufferOverflowException. Source

Il y a aussi une indication de commentaires sur ce post que vous avez besoin de cibler au moins 19 (android-19). Merci de laisser un commentaire si cette solution fonctionne également si votre cible est < 19.

C'est de cette façon que le correctif semble pour mon projet. La relative PSBA question est #61710.

1 Si vous avez vraiment besoin de downgrade, vous n'avez pas besoin de désinstaller les outils de construction de 19.0.0, il suffit d'installer 18.1.1 et ajouter sdk.buildtools=18.1.1 de la local.properties le fichier.

83voto

Lolo Me Points 821

Essayez ce que van dit :

Un clic droit sur votre → `` .

Espérons que cette aide  :)

57voto

Stefano Points 579

Même problème ici. Revenue pour construire des outils 18.1.1, Eclipse redémarré et qui fixe l’il.

50voto

user2797178 Points 938

J’ai pu obtenir mon projet problématique à construire en ajoutant cette ligne supplémentaire :

.. .pour mon fichier project.properties , qui est présent dans la racine du dossier de projet. Toutes les autres approches semblent échouer pour moi.

7voto

learner Points 1516

Faites un clic droit sur le projet >> Propriétés >> Android >> API niveau 18 a fonctionné pour moi. Mais avant que je l’ai fait j’ai un clic droit sur projet >> Android outils >> Ajouter la bibliothèque de Support et redémarré Eclipse. Vous devrez peut-être jouer avec votre niveau API sélectionné.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X