При компиляции конкретного проекта Android, и только на моем компьютере с Windows, я получаю java.nio.BufferOverflowException
от dex. Проблема возникает как при использовании Eclipse, так и при использовании Ant.
Вывод при использовании Ant:
...
[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
При использовании Eclipse сообщение короче, но похоже:
[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.
Как я уже сказал, у меня нет этой проблемы на моем MacBook, хотя они оба обновлены до последних версий инструментов Android Build: 19.0.0.
Ответы:
Нет необходимости понижать версию инструментов сборки до 18.1.1 1 , эта проблема исправлена с помощью инструментов сборки 19.0.1 .
Если по какой-то причине вы не можете использовать 19.0.1:
Убедитесь, что значение
android:targetSdkVersion
в AndroidManifest.xml совпадаетtarget=android-<value>
с project.properties . Если эти два значения не совпадают, сборка с помощью инструментов сборки версии 19.0.0 завершится исключением BufferOverflowException. ИсточникВ комментариях к этому сообщению есть также указание на то, что вам нужно настроить таргетинг как минимум на 19 (android-19). Пожалуйста, оставьте комментарий, если это решение также работает, если ваша цель <19.
Так выглядит исправление для моего проекта. Связанная проблема AOSP # 61710.
1 Если вам действительно нужно понизить версию, вам не нужно удалять инструменты сборки 19.0.0, просто установите 18.1.1 и добавьте
sdk.buildtools=18.1.1
вlocal.properties
файл.источник
Попробуйте то, что сказал ван :
Щелкните правой кнопкой мыши
project
→android tools
→android support library
.Надеюсь это поможет :)
источник
Та же проблема здесь. Вернулся к сборке инструментов 18.1.1, перезапустил Eclipse и это исправило.
источник
Мне удалось создать свой проблемный проект, добавив эту дополнительную строку:
... в мой файл project.properties , который находится в корне папки проекта. Все остальные подходы, казалось, потерпели неудачу
источник
sdk.buildtools
, нетsdk.build.tools
, и это было имя, которое работало для меня.Щелкните правой кнопкой мыши по проекту >> Свойства >> Android >> API Level 18 работал для меня. Но прежде чем сделать это, я щелкнул правой кнопкой мыши по проекту >> Инструменты Android >> Добавить библиотеку поддержки и перезапустил Eclipse . Возможно, вам придется поиграть с выбранным уровнем API .
источник
После установки нового SDK в вашем проекте появится новая папка «Зависимости Android». Если вы щелкните правой кнопкой мыши и удалите его из пути сборки, вы снова сможете собрать свой проект.
источник
Обновить
right click your project > android tools > android support library
Очисти свой проект и постарайся построить.
источник
У меня была такая же проблема после обновления до Revision 19. Только не забудьте обновить ADT, https://dl-ssl.google.com/android/eclipse/ . После этого мне удалось собрать проект с последней ревизией.
источник
Я исправил эту проблему, не загружая библиотеку поддержки и не возвращая инструменты сборки в 18.1.1. Я просто изменил уровень API на 16+, и проблема исчезла . Надеюсь, это поможет.
источник
После обновления до Android Studio 0.4.0 и Gradle 1.9 ни одно из других решений не сработало для меня.
Я решил проблему, скачав Build Tools 19.0.1 и обновив следующую строку в моих файлах build.gradle:
в
источник
Если у вас возникли проблемы с IntelliJ IDEA 13, удалите Build Tools 19.
источник
Была та же проблема с целевой версией
19
на обоихproject.properties
иAndroidManifest.xml
с Ant.Исправлено:
Android SDK Build-Tools 19.0.1
Android SDK Build-Tools 19.0.2
Я думаю, что @ Al-Kathiri-Khalid на месте. Проблема связана только с отсутствующей поддержкой уровня API в Build Tools.
источник
У меня была такая же проблема, хотя мой проект не использовал библиотеку поддержки. Добавление libs / android-support-v4.jar в проект обошло проблему, не возвращая инструменты сборки обратно из v19.
источник
Я решил эту проблему. Просто внесите это изменение в файл свойств проекта:
И в файле манифеста:
источник
Добавьте файл библиотеки в проект. Проект-> щелкните правой кнопкой мыши-> Свойства-> android-> Библиотека-> нажмите кнопку Добавить, выберите проект библиотеки и нажмите «Применить» и «ОК». Затем очистите проект и снова запустите .. если вы хочу перезапустить затмение ..
А также, иногда, необходимо обновить инструменты сборки Android SDK ..
источник
Для меня сработало следующее: я открыл файл project.properties из корня моего проекта и изменил
target=android-8
наtarget=android-17
источник
java.nio.BufferOverflowException во время от ошибки dex Это означает, что у вас нет поддерживающего API для этого уровня, следовательно, сборка завершается неудачно, есть несколько способов исправить это.
Проверьте, что ваш файл манифеста использует -sdk android: minSdkVersion = "4" и android: targetSdkVersion = "14"
Любое из нижеперечисленного решит проблему: -
источник
Я удалил предыдущий Android SDK и Eclipse . Я установил пакет ADT, и он работает ...
Это решило проблему BufferOverflow на Dex, которая началась после того, как я получил API 19. Ранее я использовал Eclipse с Android SDK, установленным в качестве дополнительного пакета.
источник
Щелкните правой кнопкой мыши на Project >> Properties >> Android и выберите API Level больше 15
ИЛИ
Чтобы добавить google-play-services_lib в свой проект, щелкните правой кнопкой мыши проект и выберите «Проект»> «Свойства» >> «Android» >> «Добавить».
источник