Ketika mengkompilasi proyek Android tertentu, dan hanya pada mesin Windows saya, saya mendapat waktu java.nio.BufferOverflowException
dari dex. Masalahnya terjadi saat menggunakan Eclipse dan saat menggunakan Ant.
Output saat menggunakan Ant adalah:
...
[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
Saat menggunakan Eclipse pesannya lebih pendek tetapi serupa:
[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.
Seperti yang saya katakan, saya tidak memiliki masalah ini di MacBook saya, meskipun keduanya ditingkatkan ke versi terbaru dari alat Android Build: 19.0.0.
Jawaban:
Tidak perlu menurunkan versi alat membangun kembali ke 18.1.1 1 , masalah ini diperbaiki dengan alat membangun 19.0.1 .
Jika Anda tidak dapat menggunakan 19.0.1 karena beberapa alasan, maka:
Pastikan nilai
android:targetSdkVersion
dalam AndroidManifest.xml cocoktarget=android-<value>
dengan project.properties . Jika kedua nilai ini tidak sama, membangun dengan alat membangun versi 19.0.0 akan berakhir dengan BufferOverflowException. SumberAda juga beberapa indikasi dari komentar pada posting ini bahwa Anda perlu menargetkan setidaknya 19 (android-19). Silakan tinggalkan komentar jika solusi ini juga berfungsi jika target Anda <19.
Beginilah cara perbaikan terlihat untuk proyek saya. Masalah AOSP terkait adalah # 61710.
1 Jika Anda benar-benar perlu menurunkan versi, Anda tidak perlu menghapus instalasi alat 19.0.0, cukup instal 18.1.1 dan tambahkan
sdk.buildtools=18.1.1
kelocal.properties
file.sumber
Coba apa kata van :
Klik kanan
project
→android tools
→ → Andaandroid support library
.Semoga ini membantu :)
sumber
Masalah yang sama disini. Dikembalikan untuk membuat alat 18.1.1, memulai kembali Eclipse dan memperbaikinya.
sumber
Saya dapat membangun proyek masalah saya dengan menambahkan baris tambahan ini:
... ke file project.properties saya , yang ada di root folder proyek. Semua pendekatan lain tampaknya gagal bagi saya.
sumber
sdk.buildtools
, bukansdk.build.tools
, dan itu adalah nama yang cocok untuk saya.Klik kanan pada proyek >> Properties >> Android >> API Level 18 bekerja untuk saya. Tetapi sebelum saya melakukannya saya melakukan klik kanan pada project >> Android Tools >> Tambah Support Library dan restart Eclipse . Anda mungkin harus bermain-main dengan level API yang Anda pilih .
sumber
Setelah pemasangan SDK baru, ada folder baru, "Android Dependencies", di bawah file proyek Anda. Jika Anda mengklik kanan dan menghapusnya dari jalur build, Anda akan dapat membangun kembali proyek Anda.
sumber
Memperbarui
right click your project > android tools > android support library
Bersihkan proyek Anda dan cobalah untuk membangun.
sumber
Saya memiliki masalah yang sama setelah memperbarui ke Revisi 19. Jangan lupa untuk memperbarui ADT, https://dl-ssl.google.com/android/eclipse/ . Setelah ini, saya dapat membangun proyek dengan revisi terbaru.
sumber
Saya memperbaiki masalah ini tanpa mengunduh perpustakaan dukungan atau mengembalikan alat pembuatan ke 18.1.1. Saya hanya mengubah level API ke 16+ dan masalahnya hilang . Semoga ini bisa membantu.
sumber
Tidak ada solusi lain di sini yang berfungsi untuk saya setelah meningkatkan ke Android Studio 0.4.0 dan Gradle 1.9.
Saya menyelesaikan masalah dengan mengunduh Build Tools 19.0.1 dan memperbarui baris berikut di file build.gradle saya:
untuk
sumber
Untuk yang menghadapi masalah dengan IntelliJ IDEA 13, hapus instalan Alat Bangun 19.
sumber
Punya masalah yang sama dengan versi target
19
pada keduanyaproject.properties
danAndroidManifest.xml
dengan Ant.Memperbaikinya dengan:
Android SDK Build-Tools 19.0.1
Android SDK Build-Tools 19.0.2
Saya pikir @ Al-Kathiri-Khalid tepat. Masalah ini hanya karena tidak adanya dukungan untuk level API di Alat Bangun.
sumber
Saya memiliki masalah yang sama, meskipun proyek saya tidak menggunakan perpustakaan dukungan. Menambahkan libs / android-support-v4.jar ke proyek mengatasi masalah tanpa perlu mengembalikan alat membangun kembali dari v19.
sumber
Saya memecahkan masalah ini. Buat saja perubahan ini di file properti proyek:
Dan dalam file manifes:
sumber
Tambahkan file Library dalam proyek .. Project-> klik kanan-> Properties-> android-> Library-> klik Tambah dan pilih Proyek Perpustakaan dan berikan berlaku dan ok .. lalu, bersihkan proyek dan jalankan lagi .. jika Anda ingin memulai kembali gerhana ..
Dan juga, kadang-kadang, perlu memperbarui alat membangun Android SDK ..
sumber
Apa yang berhasil bagi saya adalah ini: Saya membuka file project.properties dari root proyek saya dan mengubahnya
target=android-8
menjaditarget=android-17
sumber
java.nio.BufferOverflowException selama dari dex error Ini berarti Anda tidak memiliki API pendukung untuk level itu itu maka build gagal, ada sejumlah cara untuk memperbaikinya.
Periksa file manifes Anda menggunakan-sdk android: minSdkVersion = "4" dan android: targetSdkVersion = "14"
Salah satu di bawah ini akan memperbaiki masalah: -
sumber
Saya menghapus Android SDK dan Eclipse sebelumnya . Saya menginstal bundel ADT dan berfungsi ...
Ini memperbaiki masalah BufferOverflow pada Dex yang dimulai setelah saya mendapatkan API 19. Saya sebelumnya menggunakan Eclipse dengan Android SDK diinstal sebagai paket tambahan.
sumber
Klik kanan pada Project >> Properties >> Android dan pilih API Level lebih besar dari 15
ATAU
Tambahkan google-play-services_lib ke proyek Anda dengan mengklik kanan pada proyek dan memilih Project >> Properties >> Android >> Add
sumber