将 SqlCipher 版本更新到 4.2.0 后,虽然它在以前的版本 3.5.9 中工作,但我遇到了以下回溯的崩溃。
net.sqlcipher.database.SQLiteException: file is not a database
将 SqlCipher 版本更新到 4.2.0 后,虽然它在以前的版本 3.5.9 中工作,但我遇到了以下回溯的崩溃。
net.sqlcipher.database.SQLiteException: file is not a database
它为新的数据库文件格式创建了问题[注意:SqlCipher 更新并在新版本中更改其数据库文件格式以确保更高的安全性]。出于这个原因,它无法在 db 位置找到数据库并导致崩溃。只需迁移数据库即可解决问题。迁移示例代码如下:
super(context, DB_NAME, null, DB_VERSION, new SQLiteDatabaseHook() {
@Override
public void postKey(SQLiteDatabase database) {
database.rawQuery("PRAGMA cipher_migrate", null).close();
}
@Override
public void preKey(SQLiteDatabase database) {
}
});