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

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)java

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

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的部分:app

#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,改成spa

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

就能够。code

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

相关文章
相关标签/搜索