记一次使用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'

这样发现能解决问题,所以在这里记录下。

    原文作者:张文文同学
    原文地址: https://www.jianshu.com/p/2c39e79e24a7
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞