記一次使用GreenDao的小“坑”
阿新 • • 發佈:2019-01-05
很多Android開發者選擇Greendao作為資料庫使用工具,關於greendao的教程網路上也是一大堆,這裡就不再介紹,主要是記錄在專案中使用greendao出現的一個小問題,greendao的地址如下:greendao
事先說一下,我專案中使用的是greendao3.2.2
出現的主要問題是:NoClassDefFoundError
問題,具體的報錯資訊如下,這裡是部分的,而且是從網路上找的,主要自己的那時候沒記錄,然後直接從網路上摘取部分。
java.lang.NoClassDefFoundError: org.greenrobot.greendao.query.WhereCollector
at org.greenrobot.greendao.query.QueryBuilder.<init>(QueryBuilder.java:85)
at org.greenrobot.greendao.query.QueryBuilder.internalCreate(QueryBuilder.java:73)
at org.greenrobot.greendao.AbstractDao.queryBuilder(AbstractDao.java:793)
at com.luckytry.luckylibrary.MyAplication.APPAplication.initData (APPAplication.java:132)
at com.luckytry.luckylibrary.MyAplication.APPAplication.initDB(APPAplication.java:117)
at com.luckytry.luckylibrary.MyAplication.APPAplication.onCreate(APPAplication.java:39)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1009)
at android.app.ActivityThread .handleBindApplication(ActivityThread.java:4655)
at android.app.ActivityThread.access$1800(ActivityThread.java:143) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1322)
at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5356) at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:680) at dalvik.system.NativeStart.main(Native Method)
這個問題不同於ClassNotFond
,程式不會崩,但是就是沒有資料,然後就是顯示空白介面。從網路找的,很多都是新增如下的依賴:
compile 'com.android.support:multidex:1.0.1'
然後自己的Application
繼承於android.support.multidex.MultiDexApplication
,然後在清單檔案中新增自己的Application
,
接著是在Application
中實現如下:
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
但是,實際執行之後發現,還是沒有解決這個問題,還是報一樣的錯。
經過繼續Google之後,找到了另外一種解決的辦法,就是在專案中新增:
compile 'net.zetetic:android-database-sqlcipher:3.5.7'
這樣發現能解決問題,所以在這裡記錄下。