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