SQLiteException не ошибка в net.sqlcipher.database.SQLiteDatabase.dbopen(собственный метод)
Я столкнулся с проблемой при запуске тестовых случаев junit в Android Studio. Проблема очень странная, так как при первом запуске тестовых примеров в телефоне все работает отлично, но если приложение уже установлено и при выполнении тестовых случаев выдается следующая ошибка:
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 настроены правильно.
2 ответа
Решение
Я нашел решение для этой проблемы. Когда я увидел в журналах, я обнаружил, что фактическая проблема была
Unable to copy icudt46l.zip file
Это происходило потому, что я не звонил loadlibs
из SQLiteCipher
внутри тестовых пакетов.
Поэтому я добавил следующую строку в setup()
метод моего тестового класса
SQLiteDatabase.loadLibs(getContext(), getContext().getFilesDir());
База данных может быть не правильно закрыта после первого запуска приложения. Попробуйте использовать метод Close из класса SQLiteConnection:
db.Close()