[Android] Minify / Shrinker Force Close Saat Projek Android Dengan Pattern Object Oriented (MVC, MVP, MVVM)


Minify dan Shrinker adalah fitur meringkas ukuran aplikasi android saat build release pada Android Studio dan IntelliJ IDEA. Saat meringkas ini kode - kode yang dianggap tidak pernah tercapai oleh aplikasi akan tidak masuk dalam versi release sehingga ukurannya menjadi kecil. Jika dibandingkan dengan versi originalnya bisa sampai 2 kali lebih kecil dari ukurannya aslinya.

   Walaupun bagus sayangnya kadang masih salah menandai kelas - kelas kode yang dianggap tidak pernah tercapai. Ini kadang terjadi pada library yang kelasnya digunakan tapi malah dimasukan dalam versi release sehingga saat kelas dari library terpanggil aplikasi akan force close.

   Nah pada versi Android Nougat atau lebih tinggi ternyata Minify dan Shrinker ini salah menandai kelas Model sehingga aplikasi force close saat dijalankan versi release. Sudah membuat force close dan di logcat pun tidak muncul errornya secara detail sehingga sangat sulit memahami kelas apa yang membuat dia force close. Baru ketemu setelah ganti - ganti kata kunci pencarian dan ketemu salah satu komen dari Denis Dmitrienko pada thread stackoverflow.

   Denis Dmitrienko mengatakan bahwa pada kasusnya aplikasi versi release force close saat menggunakan Minify dan Shrinker adalah karena kelas Model atau lebih dikenal POJO terdeteksi sebagai kelas yang tidak tercapai sehingga tidak dimasukan dalam versi release. Minify & Shrinker perlu diberitahu kalau tersebut harus diikutkan dengan menambah beberapa perintah simpan pada file proguard-rules.pro.

Tulis kode dengan format dibawah ini pada file proguard-rules.pro
-keep class [namapackageaplikasi].[namapackagemodel].** { *; }

Contoh
-keep class com.aplikasiku.models.** { *; }
-keep class com.aplikasiku.user.models.** { *; }

   Jika sudah cobalah build versi release kembali, lihat ukurannya akan bertambah beberapa KB lebih besar daripada tanpa kode diatas. Kemungkinan besar masalah force close karena Minify / Shrinker telah hilang jika memang masalahnya karena kelas model terdeteksi sebagai kelas yang tidak pernah tercapai program.
Saya seorang programmer dengan fokus developer Web dan Android.