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

相關文章
相關標籤/搜索