SQLiteException 在 net.sqlcipher.database.SQLiteDatabase.dbopen(Native Method) 处不是错误

SQLiteException not an error at net.sqlcipher.database.SQLiteDatabase.dbopen(Native Method)

我在 android 工作室中 运行 处理 junit 测试用例时遇到问题。 这个问题很奇怪,因为当我 运行 第一次在 phone 测试用例时它工作得很好,但是如果应用程序已经安装并且当我 运行 测试用例我收到以下错误:-

net.sqlcipher.database.SQLiteException: not an error
at net.sqlcipher.database.SQLiteDatabase.dbopen(Native Method)
at net.sqlcipher.database.SQLiteDatabase.<init>(SQLiteDatabase.java:1942)
at net.sqlcipher.database.SQLiteDatabase.openDatabase(SQLiteDatabase.java:875)
at net.sqlcipher.database.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:907)
at net.sqlcipher.database.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:132)
at net.sqlcipher.database.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:99)

所有 sqlcipher 依赖项都已正确配置。

第一次 运行 您的应用程序后,数据库可能无法正确关闭。尝试使用 SQLiteConnection class:

中的 Close 方法
db.Close()

我找到了这个问题的解决方案。 当我在日志中看到时,我发现实际问题是

Unable to copy icudt46l.zip file

发生这种情况是因为我没有在测试套件中调用 SQLiteCipherloadlibs

所以我在测试的 setup() 方法中添加了以下行 class

SQLiteDatabase.loadLibs(getContext(), getContext().getFilesDir());