[Side Story] Ooh.. 65k Exception

image

* kita tau klo aplikasi android itu di running di Dalvik Virtual Machine yg ada di setiap smartphone, tp berapa org yg tau kalo DVM punya limit size untuk buildnya ? buat yg pernah dapet error ini : “Conversion to Dalvik format failed:…bla..bla..bla”, n akhirnya nemu page description’nya di website android developer.. : congratulations ! you must be developing awesome app 😀 *

So ceritanya baru pertama kali gw nemu error kaya gini, biasanya klo ada error tuh ngga jauh dari null pointer, sqlite exception (lupa upgrade versi db), and exception2 java lain yg secara technical, exception itu muncul coz ada error di kode kita, n kita aware akan hal itu. And setelah debugging sambil mungkin garuk2 kepala ngubek2 google, exception itu clear. Tapi baru kali ini gw nemu exception yg kaya gini, yg akhirnya dapet penjelasannya di website android developer, and it really out of my guess hahaha.. Jadi exception ini tuh (si conversion to dalvik format failed bla..bla..bla..) muncul karena jumlah method di aplikasi yg kita bikin melebihi 65336 method (4 digit hexa). Seperti yg kita tahu, aplikasi Android di running di Dalvik Virtual Machine, sama hal nya kaya aplikasi Java yg di run di JVM. N si dalvik vm ini nge’execute file bytecode hasil dari semua file2 yang ada di aplikasi (class dll.), yg disebut ‘dex’, yg kemudian dibentuk ke format ‘.apk’. Semua org pasti tau ttg ini, tp yg gw baru tau adalah ternyata Dalvik VM mempunyai batasan untuk file dex yg akan diexecute. Batas ini adalah jumlah maksimal method yg bisa ‘dipaketkan’ ke dalam satu file dex, yaitu sebanyak 65536 method.. Ooh wait ! Seseorang disana pasti langsung asking alexandria, how come kita bikin method sebanyak itu untuk satu aplikasi ? satu file .apk ? (*termasuk gw* hahaha). Nah ternyata untuk aplikasi yg kita bikin itu, ngga semua perhitungan method ini pure dihitung dari kode atau class yg kita bikin, melainkan dihitung juga dari 3rd party library. Artinya kalo kita bikin aplikasi yg didalemnya kita tambahin library-library penting kaya volley, parse, bolts, glide, n library SDK kaya Google Play Services and Facebook SDK, method2 yg ada di dalem 3rd party library tersebut juga masuk hitungan ! And fyi, Google Play Services Lib, ngabisin sekitar 20000 method, bahkan jika kita cuma mau pake beberapa fitur aja kaya Google Plus Sign In dan Google Maps, hal ini karena dependency setiap package yg ada di library Google.

Ooh Google… the irony 😦 … hehehe, so akhirnya setelah googling cari informasi, ada cara untuk ‘nembus’ batasan ini, cara ini disebut ‘multidex’, yaitu membuat file dex lebih dari satu. N gw ngga akan ngebahas gmn caranya bikin multidex coz tutorial yg ada di google udah jelas bgt, apalagi yg di website android developer. Ada beberapa pros dan cons dari penggunaan multidex ini, info yg bagus bisa dicek di blog safesdk. So berhubung post ini cuman sekedar side story, jd mohon maaf kalo isinya mungkin geje and ‘apaan sih !?’ hehehe peace 🙂

Thx 4 reading 🙂

Posted from WordPress for Android

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s