ClassNotFoundException di Realm setelah mengaktifkan proguard

Saya mendapatkan pengecualian:

Disebabkan oleh: java.lang.ClassNotFoundException: Tidak menemukan kelas io.realm.Realm

Dalam build.gradle minifyEnabled benar.

proguard-rules.pro:

-pertahankan kelas io.realm.annotations.RealmModule

-pertahankan kelas @io.realm.annotations.RealmModule *

-pertahankan kelas io.realm.internal.Keep

-pertahankan @io.realm.internal.Pertahankan kelas *

-jangan peringatkan javax.**

-menjaga kelas io.realm.{ *; }

-keepnames kelas publik * memperluas io.realm.RealmObject

-menjaga kelas publik * extends io.realm.RealmObject { *; }

Ada ide?


person Daryn    schedule 10.01.2018    source sumber
comment
harap sebelum menerapkan pro-guard, baca dokumentasinya   -  person David Hackro    schedule 10.01.2018
comment
Jika hal ini sama dengan yang kami lihat di realm.io, mereka mengklaim Anda tidak perlu melakukan ini: Konfigurasi ProGuard disediakan sebagai bagian dari perpustakaan Realm. Artinya, Anda tidak perlu menambahkan aturan spesifik Realm apa pun ke konfigurasi ProGuard Anda. Artinya, saya curiga mengubah aturan proguard tidak akan membantu menyelesaikan masalah ini, karena terkait dengan hal lain.   -  person    schedule 11.01.2018
comment
Mari kita lihat file build.gradle proyek dan aplikasi Anda.   -  person    schedule 11.01.2018
comment
Versi Realm manakah yang Anda gunakan? Perangkat versi API manakah ini?   -  person EpicPandaForce    schedule 11.01.2018


Jawaban (1)


Tampaknya Anda harus mengganti aturan ini:

-keep class io.realm.{ *; }

Dengan yang ini:

-keep class io.realm.** { *; }

Segala sesuatu yang dimulai dengan io.realm kemudian dapat dihapus.

Mengapa? Aturan pertama yang Anda miliki di sini tidak valid. Yang kedua akan menyimpan semuanya di io.realm termasuk sub-paket, metode, dan bidang apa pun. Artinya, ini akan mengesampingkan semua aturan lainnya.

person woutwoot    schedule 11.01.2018