0

将 SqlCipher 版本更新到 4.2.0 后,虽然它在以前的版本 3.5.9 中工作,但我遇到了以下回溯的崩溃。

net.sqlcipher.database.SQLiteException: file is not a database
4

1 回答 1

0

它为新的数据库文件格式创建了问题[注意: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) {

            }
        });
于 2019-06-10T11:31:31.590 回答