5

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)

似乎只有三星设备(SM-G900V、SM-900A、SM-900P、SM-870A、SCH-545 等)都运行 Android 5.0 Lollipop。

根据我的研究,他们的设备上似乎存在三星类加载器实现问题,导致了这种情况。人们在此问题中提到了可能的加载程序问题: https ://code.google.com/p/gmaps-api-issues/issues/detail?id=8314

人们建议向 Proguard 添加保留规则,但我们在应用程序中根本没有使用 Proguard。不过,我们确实启用了多索引。

有人对修复或解决方法有建议吗?

4

2 回答 2

1

我遇到了同样的问题。我知道这是一个proguard问题。

如果您使用 3.2.0 以上的greenDao版本,请尝试以下proguard -rules

-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
    public static java.lang.String TABLENAME;
}
-keep class **$Properties`  
于 2017-04-01T12:37:30.023 回答
0

尝试将其添加到您的 proguard-rules

-keepclassmembers class * extends de.greenrobot.dao.AbstractDao {
    public static java.lang.String TABLENAME;
}
-keep class **$Properties
于 2016-01-04T10:22:14.147 回答