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()
Другие вопросы по тегам