1. 程式人生 > >記一次使用GreenDao的小“坑”

記一次使用GreenDao的小“坑”

很多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'

這樣發現能解決問題,所以在這裡記錄下。