美文网首页Android开发Android开发Android开发
记一次使用GreenDao的小“坑”

记一次使用GreenDao的小“坑”

作者: 张文文同学 | 来源:发表于2018-04-18 23:06 被阅读39次

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

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

    相关文章

      网友评论

        本文标题:记一次使用GreenDao的小“坑”

        本文链接:https://www.haomeiwen.com/subject/yftikftx.html