Ошибка инициализации 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