Lors de la compilation d'un projet Android spécifique, et uniquement sur ma machine Windows, j'obtiens un java.nio.BufferOverflowException
pendant de dex. Le problème se produit à la fois lors de l'utilisation d'Eclipse et lors de l'utilisation d'Ant.
La sortie lors de l'utilisation d'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
Lorsque vous utilisez Eclipse, le message est plus court mais similaire:
[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 s'ils sont tous deux mis à niveau vers les dernières versions des outils Android Build: 19.0.0.
Réponses:
Pas besoin de rétrograder les outils de build vers 18.1.1 1 , ce problème est résolu avec les outils de build 19.0.1 .
Si vous ne pouvez pas utiliser 19.0.1 pour une raison quelconque, alors:
Assurez-vous que la valeur de
android:targetSdkVersion
dans AndroidManifest.xml correspondtarget=android-<value>
à project.properties . Si ces deux valeurs ne sont pas les mêmes, la création avec la version 19.0.0 des outils de génération se terminera par BufferOverflowException. La sourceLes commentaires sur ce post indiquent également que vous devez cibler au moins 19 (android-19). Veuillez laisser un commentaire si cette solution fonctionne également si votre cible est <19.
Voici à quoi ressemble le correctif pour mon projet. Le problème AOSP associé est # 61710.
1 Si vous avez vraiment besoin de rétrograder, vous n'avez pas besoin de désinstaller les outils de compilation 19.0.0, installez simplement 18.1.1 et ajoutez
sdk.buildtools=18.1.1
aulocal.properties
fichier.la source
Essayez ce que van a dit:
Faites un clic droit sur
project
→android tools
→android support library
.J'espère que cela t'aides :)
la source
Même problème ici. Revenu pour construire les outils 18.1.1, redémarré Eclipse et cela l'a corrigé.
la source
J'ai pu construire mon projet problématique en ajoutant cette ligne supplémentaire:
... à mon fichier project.properties , qui est présent à la racine du dossier du projet. Toutes les autres approches semblaient échouer pour moi.
la source
sdk.buildtools
, nonsdk.build.tools
, et c'est le nom qui a fonctionné pour moi.Faites un clic droit sur le projet >> Propriétés >> Android >> Le niveau d'API 18 a fonctionné pour moi. Mais avant cela, j'ai fait un clic droit sur le projet >> Outils Android >> Ajouter une bibliothèque de support et redémarré Eclipse . Vous devrez peut-être jouer avec le niveau d' API sélectionné .
la source
Après l'installation du nouveau SDK, il y a un nouveau dossier, "Android Dependencies", sous votre fichier de projet. Si vous cliquez avec le bouton droit de la souris et que vous le supprimez du chemin de génération, vous pourrez à nouveau générer votre projet.
la source
Mettre à jour
right click your project > android tools > android support library
Nettoyez votre projet et essayez de construire.
la source
J'ai eu le même problème après la mise à jour vers la révision 19. N'oubliez pas de mettre à jour ADT, https://dl-ssl.google.com/android/eclipse/ . Après cela, j'ai pu créer un projet avec la dernière révision.
la source
J'ai résolu ce problème sans télécharger la bibliothèque de support ou restaurer les outils de construction à 18.1.1. J'ai simplement changé le niveau d'API à 16+ et le problème a disparu . J'espère que cela aidera.
la source
Aucune des autres solutions présentées ici n'a fonctionné pour moi après la mise à niveau vers Android Studio 0.4.0 et Gradle 1.9.
J'ai résolu le problème en téléchargeant Build Tools 19.0.1 et en mettant à jour la ligne suivante dans mes fichiers build.gradle:
à
la source
Pour ceux qui rencontrent des problèmes avec IntelliJ IDEA 13, désinstallez Build Tools 19.
la source
Eu le même problème avec la version cible
19
sur les deuxproject.properties
etAndroidManifest.xml
avec Ant.Corrigé par:
Android SDK Build-Tools 19.0.1
Android SDK Build-Tools 19.0.2
Je pense que @ Al-Kathiri-Khalid est parfait. Le problème est uniquement dû à l'absence de prise en charge du niveau API dans les outils de construction.
la source
J'ai eu le même problème, bien que mon projet n'utilise pas la bibliothèque de support. L'ajout de libs / android-support-v4.jar au projet a permis de contourner le problème sans avoir besoin de rétablir les outils de compilation de la v19.
la source
J'ai résolu ce problème. Effectuez simplement cette modification dans le fichier de propriétés du projet:
Et dans le fichier manifeste:
la source
Ajoutez le fichier de bibliothèque dans le projet .. Projet-> clic droit-> Propriétés-> android-> Bibliothèque-> cliquez sur Ajouter et sélectionnez le projet de bibliothèque et donnez appliquer et ok .. puis, nettoyez le projet et exécutez à nouveau .. si vous veux redémarrer l'éclipse ..
Et aussi, parfois, besoin de mettre à jour les outils de création du SDK Android.
la source
Voici ce qui a fonctionné pour moi: j'ai ouvert le fichier project.properties à la racine de mon projet et je l'ai changé
target=android-8
entarget=android-17
la source
java.nio.BufferOverflowException pendant une erreur de dex Cela signifie que vous ne disposez pas de l' API de support pour ce niveau et que la construction échoue, il existe plusieurs façons de résoudre ce problème.
Vérifiez votre fichier manifeste uses-sdk android: minSdkVersion = "4" et android: targetSdkVersion = "14"
L'un des éléments ci-dessous résoudra le problème: -
la source
J'ai supprimé le SDK Android précédent et Eclipse . J'ai installé le bundle ADT et ça marche ...
Cela a résolu le problème de BufferOverflow sur Dex qui a commencé après avoir obtenu l' API 19. J'utilisais auparavant Eclipse avec Android SDK installé en tant que package complémentaire.
la source
Faites un clic droit sur Projet >> Propriétés >> Android et sélectionnez Niveau d'API supérieur à 15
OU
Ajoutez google-play-services_lib à votre projet en faisant un clic droit sur le projet et en sélectionnant Projet >> Propriétés >> Android >> Ajouter
la source