ClassNotFoundException в Realm после включения proguard

У меня исключение:

Вызвано: java.lang.ClassNotFoundException: не удалось найти класс io.realm.Realm

В build.gradle minifyEnabled правда.

proguard-rules.pro:

-keep класс io.realm.annotations.RealmModule

-keep @ io.realm.annotations.RealmModule класс *

-keep класс io.realm.internal.Keep

-keep @ io.realm.internal.Keep класс *

-dontwarn javax. **

-сохранить класс io.realm. {*; }

-keepnames публичный класс * расширяет io.realm.RealmObject

-сохранить открытый класс * расширяет io.realm.RealmObject {*; }

Любая идея?


person Daryn    schedule 10.01.2018    source источник
comment
пожалуйста, перед внедрением Pro-Guard прочтите документацию   -  person David Hackro    schedule 10.01.2018
comment
Если это то же самое, что мы видим на realm.io, они утверждают, что вам не нужно этого делать: Конфигурация ProGuard предоставляется как часть библиотеки Realm. Это означает, что вам не нужно добавлять какие-либо правила для Realm в конфигурацию ProGuard. То есть я подозреваю, что настройка правил proguard не поможет решить эту проблему, так как она связана с чем-то другим.   -  person    schedule 11.01.2018
comment
Давайте посмотрим на файлы вашего проекта и приложения build.gradle.   -  person    schedule 11.01.2018
comment
Какую версию Realm вы используете? Какая версия API это устройство?   -  person EpicPandaForce    schedule 11.01.2018


Ответы (1)


Похоже, вам придется заменить это правило:

-keep class io.realm.{ *; }

С этим:

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

Все остальное, что начинается с io.realm, можно удалить.

Почему? Первое имеющееся у вас правило недействительно. Второй будет хранить все в io.realm, включая все подпакеты, методы и поля. Это означает, что он переопределит все остальные правила.

person woutwoot    schedule 11.01.2018