Saya membangun aplikasi dengan SugarORM Library tetapi ketika saya mencoba membangun proyek untuk API 17 (tidak memeriksa yang lain) itu menunjukkan kesalahan pembuatan.
Information:Gradle tasks [:app:assembleDebug]
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAnimatedVectorDrawable2330Library UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72330Library UP-TO-DATE
:app:prepareComAndroidSupportCardviewV72330Library UP-TO-DATE
:app:prepareComAndroidSupportDesign2330Library UP-TO-DATE
:app:prepareComAndroidSupportMediarouterV72300Library UP-TO-DATE
:app:prepareComAndroidSupportRecyclerviewV72330Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42330Library UP-TO-DATE
:app:prepareComAndroidSupportSupportVectorDrawable2330Library UP-TO-DATE
:app:prepareComAndroidVolleyVolley100Library UP-TO-DATE
:app:prepareComGithubSatyanSugar14Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServices840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAds840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAnalytics840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAppindexing840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAppinvite840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAppstate840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAuth840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesBase840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesBasement840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesCast840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesDrive840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesFitness840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesGames840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesGcm840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesIdentity840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesLocation840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesMaps840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesMeasurement840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesNearby840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesPanorama840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesPlus840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesSafetynet840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesVision840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesWallet840Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesWearable840Library UP-TO-DATE
:app:prepareMeDrakeetMaterialdialogLibrary131Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:compileDebugJavaWithJavac
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
:app:compileDebugNdk UP-TO-DATE
:app:compileDebugSources
:app:prePackageMarkerForDebug
:app:transformClassesWithDexForDebug
Error:The number of method references in a .dex file cannot exceed 64K.
Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2
Information:BUILD FAILED
Information:Total time: 21.663 secs
Information:2 errors
Information:0 warnings
Information:See complete output in console
Tetapi ketika saya membangun proyek ini untuk Android v5.0 atau lebih tinggi, itu berfungsi dengan baik. Jika saya menghapus dependensi SugarORM gradle berfungsi dengan baik untuk kedua perangkat v4.2.2 dan v5.0.
android
gradle
android-gradle-plugin
android-multidex
sugarorm
Sandeep Singh Rana
sumber
sumber
One or more of the answers is exemplary and worthy of an additional bounty.Just to the point and accurate answer.
Saya sarankan jawaban atas (dan diterima)!Jawaban:
Anda memiliki terlalu banyak metode. Hanya ada 65536 metode untuk dex .
Seperti yang disarankan, Anda dapat menggunakan dukungan multidex .
Cukup tambahkan baris ini di
module/build.gradle
:Juga di
Manifest
tambahkanMultiDexApplication
kelas dari pustaka dukungan multidex ke elemen aplikasiJika Anda menggunakan
Application
kelas Anda sendiri , ubah kelas induk dariApplication
menjadiMultiDexApplication
.Jika Anda tidak bisa melakukannya, di kelas Aplikasi Anda timpa
attachBaseContext
metode dengan:Solusi lain adalah mencoba untuk menghapus kode yang tidak digunakan dengan ProGuard - Konfigurasikan pengaturan ProGuard untuk aplikasi Anda untuk menjalankan ProGuard dan pastikan Anda menyusut diaktifkan untuk rilis build.
sumber
Di android / app / build.gradle
Masukkan ini ke dalam konfigurasi default Anda:
sumber
Saya mendapat pesan kesalahan ini karena ketika mengompilasi versi kompilasi pembaruan proyek saya otomatis dalam
build.gradle
file saya :Selesaikan dengan memperbaiki versi:
sumber
Inilah yang bekerja untuk saya:
Ini terjadi karena ada terlalu banyak metode yang tidak digunakan. Sebagian besar metode ini berasal dari perpustakaan yang disertakan dalam build.gradle Anda
Gunakan sumber daya minify dan shrink untuk memperbaikinya dengan gradle dan bersihkan kode Anda secara bersamaan.
sumber
Ubah build.gradle tingkat aplikasi:
itu berhasil untuk saya.
sumber
multiDexEnabled
opsi, tanpa ketergantungan atau perubahan file nyataKesalahan ini juga dapat terjadi ketika Anda memuat semua layanan google play apis saat Anda hanya menggunakan sedikit.
Seperti yang dinyatakan oleh google: "Dalam versi layanan Google Play sebelum 6.5, Anda harus mengkompilasi seluruh paket API ke dalam aplikasi Anda. Dalam beberapa kasus, hal itu membuatnya lebih sulit untuk mempertahankan jumlah metode dalam aplikasi Anda (termasuk API kerangka kerja, metode pustaka, dan kode Anda sendiri) di bawah batas 65.536.
Dari versi 6.5, Anda dapat mengkompilasi API layanan Google Play secara selektif ke dalam aplikasi Anda. "
Misalnya ketika aplikasi Anda membutuhkan play-services-maps, play-services-location. Anda hanya perlu menambahkan dua apis di file build.gradle Anda di tingkat aplikasi seperti yang ditunjukkan di bawah ini:
Dari pada:
Untuk dokumentasi lengkap dan daftar layanan google play apis klik di sini
sumber
Ketika referensi aplikasi Anda melebihi 65.536 metode, Anda menemukan kesalahan build yang menunjukkan aplikasi Anda telah mencapai batas arsitektur Android build
Dukungan multidex sebelum Android 5.0
Versi platform sebelum Android 5.0 (API level 21) menggunakan runtime Dalvik untuk mengeksekusi kode aplikasi. Secara default, Dalvik membatasi aplikasi ke file bytecode class.dex tunggal per APK. Untuk mengatasi batasan ini, Anda dapat menambahkan pustaka dukungan multidex ke proyek Anda:
Dukungan multidex untuk Android 5.0 dan lebih tinggi
Android 5.0 (API level 21) dan lebih tinggi menggunakan runtime yang disebut ART yang secara alami mendukung memuat beberapa file DEX dari file APK. Oleh karena itu, jika minSdkVersion Anda 21 atau lebih tinggi, Anda tidak perlu multidex dukungan .
Hindari batas 64K
Konfigurasikan multidex di aplikasi untuk
Jika minSdkVersion Anda diatur ke 21 atau lebih tinggi, yang perlu Anda lakukan adalah mengatur multiDexEnabled menjadi true dalam file build.gradle tingkat modul Anda.
jika minSdkVersion Anda diatur ke 20 atau lebih rendah, maka Anda harus menggunakan pustaka dukungan multidex
Ganti kelas Aplikasi, ubah untuk memperluas MultiDexApplication (jika mungkin) sebagai berikut:
tambahkan ke file manifes
sumber
Saya telah menghadapi masalah yang sama dan untuk dukungan multidex, Anda harus mengingat minSdkVersion aplikasi Anda. Jika Anda menggunakan minSdkVersion 21 atau lebih baru, tulis saja multiDexEnabled benar seperti ini
Ini berfungsi untuk saya dan jika Anda menggunakan minSdkVersion di bawah 21 (di bawah lolipop ) maka Anda harus melakukan dua hal ekstra sederhana
1. Pertama tambahkan ketergantungan ini
di build.gradle Anda.
2. Terakhir dan kedua tambahkan satu baris di bawah ini ke aplikasi Anda dalam manifes
Bingo maka itu akan bekerja di versi yang lebih rendah juga .. :) Selamat coding
sumber
Hanya komentar sampingan, Sebelum menambahkan dukungan untuk multidex - pastikan Anda tidak menambahkan dependensi yang tidak perlu.
Misalnya dalam panduan analisis Facebook resmi
Mereka dengan jelas menyatakan bahwa Anda harus menambahkan ketergantungan berikut:
yang sebenarnya adalah seluruh FacebookSDK - jadi jika Anda hanya perlu misalnya Analytics, Anda harus menggantinya dengan:
Opsi SDK parsial Facebook
sumber
facebook-core
danfacebook-login
kesalahan telah hilang.Bagi saya Upgrade Gradle berfungsi. Cari pembaruan di Situs Web Android, lalu tambahkan di build.gradle Anda (Proyek) seperti ini
kemudian sinkronkan proyek dengan file gradle plus itu mungkin terjadi kadang-kadang karena java.exe (dalam kasus saya) hanya memaksa membunuh java.exe dari task manager di windows kemudian jalankan kembali program
sumber
Bisa juga coba ini:
Semoga ini bisa membantu seseorang. Terima kasih
sumber
**
Untuk Pengembang Game Unity
**
Jika ada yang datang ke sini karena kesalahan ini muncul di proyek Unity mereka, Buka File-> Build Settings -> Pengaturan Player -> Player. pergi ke Pengaturan Penerbitan dan di bawah tab Bangun, aktifkan "Kustom Template Gradle Peluncur". jalan akan ditampilkan di bawah teks itu. buka jalan dan tambahkan multiDexEnabled true seperti ini:
sumber
Anda dapat mengaktifkan "Instant Run" di Android Studio untuk mendapatkan dukungan multidex.
sumber
Lakukan ini, ini berfungsi:
sumber