【问题标题】:DaoConfig init failure with greendao on Samsung Devices with Android 5.0在装有 Android 5.0 的三星设备上使用 greendao 的 DaoConfig 初始化失败
【发布时间】:2015-12-11 04:31:23
【问题描述】:

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。不过,我们确实启用了多索引。

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

【问题讨论】:

    标签: android android-5.0-lollipop samsung-mobile greendao nosuchfieldexception


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      尝试将此添加到您的 proguard-rules 中

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-17
        • 2021-04-09
        • 1970-01-01
        • 2017-06-20
        • 1970-01-01
        相关资源
        最近更新 更多