Ada banyak postingan tentang MultiDex. Saya pernah mengalami, terkadang, kesalahan diselesaikan termasuk multiDexEnabled true
di defaultConfig
bagian build.gradle saya.
Tapi, sebenarnya apa sih fitur ini? Apa skenario untuk menggunakannya?
sumber
Ada banyak postingan tentang MultiDex. Saya pernah mengalami, terkadang, kesalahan diselesaikan termasuk multiDexEnabled true
di defaultConfig
bagian build.gradle saya.
Tapi, sebenarnya apa sih fitur ini? Apa skenario untuk menggunakannya?
Mengutip dokumentasi :
File aplikasi Android (APK) berisi file bytecode yang dapat dieksekusi dalam bentuk file Dalvik Executable (DEX), yang berisi kode terkompilasi yang digunakan untuk menjalankan aplikasi Anda. Spesifikasi Dalvik Executable membatasi jumlah total metode yang dapat dirujuk dalam satu file DEX menjadi 65.536, termasuk metode framework Android, metode library, dan metode dalam kode Anda sendiri. Untuk melewati batas ini, Anda harus mengonfigurasi proses build aplikasi Anda untuk menghasilkan lebih dari satu file DEX, yang dikenal sebagai konfigurasi multidex.
Jadi, fiturnya adalah: memungkinkan aplikasi kompleks Anda untuk dikompilasi. Skenario untuk menggunakannya adalah ketika aplikasi Anda gagal untuk mengompilasi karena mencapai batas referensi metode 64K DEX. Ini muncul sebagai kesalahan versi, seperti:
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
Sesederhana ini
Satu file .dex dapat memiliki 65.536 metode (referensi) jadi jika jumlah referensi melebihi 65.536, gunakan multidex.
Penjelasan Lebih Lanjut!
Program aplikasi android dikompilasi menjadi file .dex yang kemudian di-zip menjadi satu file .apk.
DVM (Mesin Virtual Dalvik) menggunakan file / file .dex untuk mengeksekusi bytecode.
Apa yang menyebabkan jumlah referensi melebihi batas 65.536?
Metode yang Anda tulis + Metode Kerangka Android + Metode perpustakaan pihak ketiga (misalnya Volley, Retrofit, Facebook SDK, dll).
Saya telah membaca "di suatu tempat"
App Compat 24.2.1 berisi 16.5k metode
Layanan Google Play GCM 9.6.1 berisi metode 16.7k
Jadi jika Anda telah membuat aplikasi Hello world sederhana yang memiliki App Compat 24.2.1, Anda sudah 1/4 cara untuk melewati batas metode dex tunggal
sumber
Apa itu MultiDex di Android?
Dex adalah singkatan dari Dalvik Executable, yang digunakan oleh prosesor mesin virtual (Dalvik) Google untuk menangani Aplikasi Android. Android dibuat dengan aplikasi kecil dan sederhana dalam pikiran dan batasan pada satu Dalvik Executable menyematkan atap referensi kode pada 65.536 metode. Karena masalah ini dan cara mesin Dalvik menangani eksekusi kode, ada beberapa masalah kompilasi dan pemanggilan, hingga Monkey Patch atau integrasi MultiDex . Integrasi MultiDex di Android Studio memungkinkan Pengembang Android kemampuan untuk mengompilasi dan mengeksekusi basis kode dengan lebih dari 65.536 metode!
sumber
Mengakui situs resmi pengembang Android.
sumber
Yang juga memungkinkan adalah, bagi google (dan lainnya) untuk menerapkan DRM, katakanlah .. widevine, dalam potongan kode yang menyebabkan masalah bagi sebagian besar non-pengembang ..
sumber