Ошибка инициализации DaoConfig с greendao на устройствах Samsung с Android 5.0

Crashlytics сообщает о многих сбоях в greendao:

> Caused by de.greenrobot.dao.DaoException: Could not init DAOConfig
>        at de.greenrobot.dao.internal.DaoConfig.<init>(DaoConfig.java:94)
>        at de.greenrobot.dao.AbstractDaoMaster.registerDaoClass(AbstractDaoMaster.java:44)
> ... Caused by java.lang.NoSuchFieldException: TABLENAME
>        at java.lang.Class.getField(Class.java:1104)
>        at de.greenrobot.dao.internal.DaoConfig.<init>(DaoConfig.java:56)
>        at de.greenrobot.dao.AbstractDaoMaster.registerDaoClass(AbstractDaoMaster.java:44)

Похоже, только устройства Samsung (SM-G900V, SM-900A, SM-900P, SM-870A, SCH-545 и т. Д.) Все работают под управлением Android 5.0 Lollipop.

Из моих исследований, кажется, возникает проблема с реализацией загрузчика класса Samsung на их устройствах. В этой проблеме люди упоминали возможный загрузчик: https://code.google.com/p/gmaps-api-issues/issues/detail?id=8314

Люди предложили добавить правила хранения в Proguard, но мы вообще не используем Proguard в приложении. У нас есть мультидексинг включен, хотя.

У кого-нибудь есть предложения по исправлениям или обходным путям?

2 ответа

Я столкнулся с той же проблемой. Я знаю, что это проблема proguard.

если вы используете версию greenDao выше 3.2.0, просто попробуйте следующие правила proguard

-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
    public static java.lang.String TABLENAME;
}
-keep class **$Properties`  

Попробуйте добавить это в ваши правила proguard

-keepclassmembers class * extends de.greenrobot.dao.AbstractDao {
    public static java.lang.String TABLENAME;
}
-keep class **$Properties
Другие вопросы по тегам