GreenDao 解决5.0以下报错问题

在greendao使用的时候大家可能都会遇到过版本兼容问题,就是我们在使用GreenDao数据库的时候会发现,在android5.0以上的系统版本,没什么问题,我们可以正常运行,这也没问题,但是在android5.0一下版本就会报错。

java.lang.NoClassDefFoundError: org.greenrobot.greendao.database.StandardDatabase
at org.greenrobot.greendao.database.DatabaseOpenHelper.wrap(DatabaseOpenHelper.java:70)
......

解决办法
引入一个包:

 compile 'com.android.support:multidex:1.0.1'

如果你的工程中已经含有Application类,那么让它继承android.support.multidex.MultiDexApplication类,

/**
 * Created by jian on 2017/2/2.
 */
public class App extends MultiDexApplication {

    public static final boolean ENCRYPTED = true;

    private static DaoSession daoSession;
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
        //先执行上面代码再执行初始化
        initDatabase();
    }
    @Override
    public void onCreate() {
        super.onCreate();
    }

  private void initDatabase(){
  DaoMaster.DevOpenHelper helper = new  DaoMaster.DevOpenHelper(this, ENCRYPTED ? "users-db-encrypted" : "myusers-db");
        Database db =  helper.getWritableDb();
        daoSession = new DaoMaster(db).newSession();
        DataManager dataManager = new  DataManager();
 }
}

这样就可以解决5.0以下报错问题了。

至于为什么会出现这种问题,是因为android4.4有分包机制,
大家可以看下面这篇文章,讲得很好:
Android 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚

GreenDao3的使用请看这个博客:
GreenDao3.2的基本使用

你可能感兴趣的:(Android)