Jika saya lari gradle assembleDebug
dari baris perintah, tiba-tiba saya mendapatkan kesalahan ini:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
at com.android.dx.command.dexer.Main.run(Main.java:232)
at com.android.dx.command.dexer.Main.main(Main.java:174)
at com.android.dx.command.Main.main(Main.java:91)
Jika saya grep untuk v4 saya melihat dua file di dalam folder build saya.
Binary file build/pre-dexed/debug/support-v4-19.0.0-2ba5fdd60a6c3836b3104a863fe42897da1fa9d1.jar matches
Binary file build/pre-dexed/debug/support-v4-r7-227d905d79b23b20866531d4f700446c040a2ccb.jar matches
File gradle saya hanya menyertakan pustaka dukungan ini:
compile 'com.android.support:support-v13:19.0.0'
Saya bingung bagaimana perpustakaan r7 dimasukkan entah bagaimana. Saya sudah menjalankan gradle clean
dan selalu muncul di sana ketika saya jalankan kembali assembleDebug.
Jika saya menerima r7 di dalam direktori build, saya melihatnya di dalam file:
Binary file build/exploded-bundles/ComGoogleAndroidGmsPlayServices4030.aar/classes.jar matches
Jika saya tidak menyertakan v13, maka hal-hal lain tidak dapat dikompilasi.
Tetapi bukankah v13 menyertakan pustaka dukungan v4?
Apakah ini ketidakcocokan antara bundel layanan play AAR dan pustaka v13?
Saya mengambil file gradle dari gradleplease.appspot.com.
Menghapus layanan bermain tidak memperbaikinya; kesalahan yang sama.
Ketergantungan saya di dalam build.gradle:
dependencies {
// Google Play Services
//compile 'com.google.android.gms:play-services:4.0.30'
// Support Libraries
//compile 'com.android.support:support-v4:19.0.0'
///compile 'com.android.support:appcompat-v7:19.0.0'
//compile 'com.android.support:gridlayout-v7:19.0.0'
compile 'com.android.support:support-v13:19.0.0'
compile 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5'
compile 'commons-codec:commons-codec:1.9'
compile 'com.madgag:markdownj-core:0.4.1'
compile 'com.wu-man:android-oauth-client:0.0.2'
compile 'com.google.http-client:google-http-client-jackson2:1.17.0-rc'
compile 'org.apache.commons:commons-lang3:3.2'
compile 'com.google.code.gson:gson:2.2.4'
}
Jawaban:
Jalankan
gradle -q dependencies
(ataugradle -q :projectName:dependencies
) untuk menghasilkan laporan ketergantungan. Anda harus melihat dari manar7
datangnya, seperti:Kemudian, gunakan
exclude
arahan untuk memblokir ketergantungan itu. Dalam kasus saya, itu berasal dari perpustakaan CWAC-Camera saya, dan jadi saya menggunakan:(di mana
compile
pernyataan kedua menunjukkan versi apa yang sebenarnya Anda inginkan)Itu akan menyelesaikan masalah, karena Anda akan melihat apakah Anda menjalankan laporan ketergantungan lagi:
sumber
gradle dependencies
tampaknya tidak melaporkan dependensi yang ditambahkan dengancompile files('libs/example.jar')
libs/*.jar
dependensi dengan modul yang sama, tidak ada yang tersedia sebagai artefak. Adakah cara untuk melakukan inspeksi ketergantungan / pengecualian kelas yang serupa?compile project(':foo')
menjadicompile(project(':foo')) { exclude module: 'support-v4' }
. Perhatikan tanda kurung.Saya memecahkan kesalahan yang sama dengan menambahkan potongan kode berikut ke file build.gradle saya di dalam blok android.
sumber
Karena gambar bernilai ribuan kata
Untuk membuatnya lebih mudah dan lebih cepat untuk menyelesaikan tugas ini dengan pemula seperti saya. ini adalah tangkapan layar yang menunjukkan jawaban yang dikirim oleh @ edsappfactory.com yang berfungsi untuk saya:
Pertama buka Gradle pandangan di sisi kanan Androidstudio, di aplikasi Anda item yang pergi ke
Tasks
kemudianAndroid
kemudian klik kananandroidDependencies
kemudian pilihRun
:Kedua, Anda akan melihat sesuatu seperti ini:
Alasan utama saya memposting ini adalah bahwa tidak mudah untuk mengetahui di mana harus menjalankan
gradle
tugas atau perintah yang diposting di atas. Jadi ini adalah tempat untuk mengasingkan mereka juga.SO, untuk menjalankan perintah gradle:
Pertama:
Kedua:
Mudah seperti itu.
Itu dia.
Terima kasih.
sumber
Juga perlu dicatat Anda dapat melihat dependensi android Anda, dengan masuk ke tampilan Android Studio Gradle Anda, dan memilih target "androidDependencies".
Satu lagi tip: Saya mengalami masalah ini, sampai saya menghapus dukungan lib v4 dari folder libs di kedua proyek dan proyek modul / pustaka terkait saya.
sumber
Saya mulai mendapatkan kesalahan ini ketika memutakhirkan ke ButterKnife 8.5.1. Tidak ada jawaban lain di sini yang berfungsi untuk saya.
Saya biasa
gradle -q :app:dependencies
melihat pohon itu, dan kemudian melihat-lihat file jar sampai saya menemukan konflik. Konfliknya adalah bahwa ketergantungan butterknife padacom.android.support:support-compat:25.1.0
berisi versi kelas aksesibilitas, dancom.android.support:support-v4:23.1.1
juga mengandung kelas.Saya menyelesaikannya dengan mengubah ketergantungan saya dari ini:
untuk ini:
Tampaknya tidak mempengaruhi operasi ButterKnife sejauh ini.
Sunting: Ada solusi yang lebih baik, yaitu meningkatkan pustaka dukungan android saya agar sesuai dengan ButterKnife:
sumber
Jika ada yang mengetahui bahwa jawaban dari CommonsWare tidak dapat diterapkan pada proyek perpustakaan android, berikut adalah cuplikan untuk memperbaikinya
compile (project (': yourAndroidLibrary')) {mengecualikan modul: 'support-v13'}
Anda akan menemukan masalah
jika Anda menggunakan proyek kompilasi (': yourAndroidLibrary') {kecualikan modul: 'support-v13'}
Perbedaannya adalah gelang "(" dan ")" sebelum "proyek" .
sumber
Tidak akan bekerja untuk saya dengan ketergantungan proyek, satu-satunya cara saya bisa membuatnya bekerja adalah melalui sintaks berikut:
Di mana: Android-SDK adalah nama proyek Anda.
sumber
Saya memiliki masalah yang sama dan tampaknya aplikasi saya memiliki terlalu banyak metode karena perpustakaan: http://developer.android.com/tools/building/multidex.html
Selesaikan dengan:
Lebih lanjut di sini Kesalahan: Eksekusi gagal untuk tugas ': app: dexDebug'. > comcommand selesai dengan nilai keluar non-nol 2
sumber
Saya memiliki kesalahan yang sama tetapi itu karena saya baru saja berubah dari menggunakan v4 ke v13. Jadi yang harus saya lakukan adalah membersihkan proyek.
sumber
Saya memiliki kesalahan yang sama pada proyek legacy. Kesalahan saya adalah bahwa perpustakaan dukungan dimasukkan dua kali: Sekali di dalam google-play-services lib, dan yang lainnya sebagai standalone.
Inilah cara saya memperbaikinya:
Build.gradle BAD:
Build.gradle BAIK:
Semoga ini bisa membantu seseorang :-)
sumber
Saya menggunakan
com.google.android.gms:play-services-analytics:8.3.0
danandroid-support-v13.jar
dan tidak bisa mulaiexclude module: 'support-v4'
bekerja.Apa yang berhasil bagi saya adalah menggunakan
android-support-v13
artefak daripadaandroid-support-v13.jar
file.Yaitu bukannya
}
Saya menggunakan
}
sumber
Dalam kasus saya masalahnya disebabkan oleh ketidakkonsistenan versi :
Solusinya sederhana: Buat semuanya versi 25
sumber
Metode dex masalah serupa diselesaikan
gradle.build mengandung:
Masalah ini teratasi saat saya dihapus
Gradle saya sekarang terlihat seperti:
Ada redundansi pada file JAR dan proyek gradle yang dikompilasi
Jadi sangat mencari file dependensi dan jar yang memiliki kelas yang sama.
Dan menghapus redundansi.
Ini berhasil untuk saya.
sumber
Jika Anda telah mengimpor proyek Anda dari Eclipse .
Skenario yang saya hadapi setelah mengimpor proyek Eclipse ke Android studio.
Semoga ini membantu..
sumber
Ini adalah masalah yang menjengkelkan, yang bisa memakan waktu untuk mengetahui kasus root. Cara Anda harus melanjutkan adalah jawaban @CommonsWare.
Saya menghadapi masalah ini baru-baru ini dan merasa sulit untuk menyelesaikannya.
Masalah saya adalah saya memasukkan perpustakaan dengan versi "+" di build.gradle. Versi terbaru perpustakaan berisi salah satu dari dex and bang yang lebih tua.
Saya kembali ke perpustakaan versi lama dan menyelesaikannya.
Adalah baik untuk menjalankan AndroidDependencies Anda dan melihat apa yang sebenarnya terjadi. Ini juga bagus untuk mencari di folder build Anda.
Di atas semua Android Studio 2.2 menyediakan fitur dalam membangun untuk melacak masalah ini.
Selamat Coding Guys
sumber
Di Android Studio, buka file build.gradle Anda (periksa file proyek dan modul build.gradle) dan cari dependensi duplikat.
Hapus yang tidak dibutuhkan proyek Anda.
sumber
Menghapus semua file dari cache Gradle memperbaiki masalah saya.
di Linux:
sumber
Saya menghapus kompilasi 'com.android.support:support-v4:18.0.+' dalam dependensi, dan itu berfungsi
sumber
Saya dapat menyelesaikan masalah dalam proyek asli reaksi saya hanya dengan menambahkan
di akhir file android \ app \ build.gradle saya
sumber
Akhirnya, saya menyelesaikannya dengan memodifikasi atribut-atribut ini pada file module gradle
sumber
Saya memiliki masalah yang sama ketika menambahkan
react-native-palette
ke proyek saya, di sini adalah pohon dependensi saya:Saya mencoba banyak soluton dan tidak dapat memperbaikinya, sampai mengubah
com.android.support:appcompat
versiandroid/app/build.gradle
, saya berharap ini dapat membantu:tampaknya banyak entri bukan masalah besar, versi tidak cocok
sumber
Sudah bekerja untuk
compile file('...')
Mengatasinya konflik dengan meningkatkan minSdkVersion ke 21 dan mengaktifkan multidex. Tidak yakin apakah itu solusi terbaik tetapi satu-satunya cara saya dapat membuatnya bekerja dalam kasus saya.Catatan: karena
compile file('...')
tampaknya Anda tidak dapat memasukkanexclude
klausa sehingga opsi itu tidak tersedia.sumber
Saya memiliki masalah yang sama, dan solusi saya mengubah versi dukungan '27. + '(27.1.0) menjadi '27 .0.1'
sumber
Saya memiliki masalah yang sama. Dalam proyek saya, saya memiliki dependensi berikut:
Untuk alasan warisan, appcompat diambil dari repo Google Maven, sedangkan dukungan android adalah .jar lokal.
Ketika saya menemukan ini, dan mengganti referensi lokal ini dengan referensi pakar, itu hanya menyelesaikan masalah build saya.
Inilah perbedaan dari app / build.gradle saya:
sumber
Saya menyelesaikan semua masalah saya dengan menambahkan ini ke dalam project.properties
sumber
Menerima kesalahan berikut
Eksekusi gagal untuk tugas ': app: transformDexArchiveWithDexMergerForDebug'.
Perbaiki: pergi ke Build -> Clean Project
sumber