greendao混淆后运行时报错org.greenrobot.greendao.DaoException: Could not init DAOConfig

·  阅读 3384

org.greenrobot.greendao.DaoException: Could not init DAOConfig at org.greenrobot.greendao.internal.DaoConfig.(DaoConfig.java:28) at org.greenrobot.greendao.AbstractDaoMaster.registerDaoClass(AbstractDaoMaster.java:1)

今天升级了一下Android Studio到3.5版本,不混淆的情况下运行app没有问题,混淆之后在使用greendao的地方报错导致应用crash了,查了一下原因最终导致报错的地方在:

Caused by: java.lang.ArrayIndexOutOfBoundsException: length=1; index=9
        at org.greenrobot.greendao.internal.DaoConfig.reflectProperties(DaoConfig.java:11)
        at org.greenrobot.greendao.internal.DaoConfig.<init>(DaoConfig.java:4)
        	... 49 more
复制代码

问题是之前就算混淆也运行的很好,为什么这次却报错了。看了一下 proguard-rules文件里关于greendao的部分:

#GreenDao
-keep class org.greenrobot.greendao.**{*;}
-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
    public static java.lang.String TABLENAME;
}
-keep class **$Properties
复制代码

发现这一句写的可能有问题-keep class **$Properties,改为

-keep class **$Properties{*;} 
复制代码

就可以。

按理来说前者的写法是错的,为什么之前没出现问题呢,而升级Android studio3.5就出问题了,这个后续有时间再来深究。

分类:
Android
标签:
收藏成功!
已添加到「」, 点击更改