我已经使用带有 sqlcipher 的 greendao 生成器来加密数据库。但是当我将 sqlcipher 从 3.5.7 升级到 4.4.3 时,我的应用程序崩溃了,因为我的应用程序无法访问旧的加密数据库。我已经搜索了一个解决方案,发现我需要在 SQLiteDatabaseHook 的 postKey 中运行 PRAGMA cipher_migrate 来迁移我的数据库。
过程必须按照此链接 https://discuss.zetetic.net/t/upgrading-sqlcipher-for-android-from-3-to-4/3580完成 但我无法弄清楚如何使用 greendao 执行此操作或?非常感谢有关此升级的任何帮助
我的自定义开放助手类:
public class MyOpenHelper extends DaoMaster.OpenHelper {
private static final String TAG = "MyOpenHelper";
public OpenHelperCustomized(Context context, String name) {
super(context, name);
}
public OpenHelperCustomized(Context context, String name, SQLiteDatabase.CursorFactory factory) {
super(context, name, factory);
}
@Override
public void onUpgrade(Database db, int oldVersion, int newVersion) {
//super.onUpgrade(db, oldVersion, newVersion);
migrate(db, oldVersion, newVersion);
}
}
这就是我初始化数据库的方式
DaoMaster.OpenHelper helper = new OpenHelperCustomized(getApplicationContext(), "market_enc_db");
Database db = helper.getEncryptedWritableDb(secret);
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();