В Android Pie sqlite ведение журнала записи (WAL) включено по умолчанию.Это вызывает ошибки для моего существующего кода только в устройствах Pie.Мне не удалось отключить WAL с помощью SQLiteDatabase.disableWriteAheadLogging()
или PRAGMA journal_mode
из-за способа доступа к базе данных.Я хотел бы полностью отключить WAL с помощью параметра Android под названием db_compatibility_wal_supported :
Совместимость WAL (ведение журнала записи) для приложений
Кто-нибудьзнаете как это настроить?Я не знаю, можно ли программно изменить этот файл при запуске или изменить его вручную.
Дополнительная информация о проблеме
У меня есть база данных sqlite (20 МБ + / 250 КБзаписи) в моем приложении.Этот БД генерируется с использованием простой Java на моем сервере.Он содержит базу данных продуктов питания, и пользователь приложения может добавить в базу данных (и сервер обновляется).Это хранится в папке активов в Android.Во время первой установки база данных копируется из ресурсов в папку приложения, чтобы ее можно было записать, эффективно используя этот метод:
Копировать базу данных SQLite из папки активов
К сожалению, как только я начинаю запись в базу данных, используется SqlDroid wal, и таблицы, которые были в исходной базе данных, исчезли, и остались только все вновь созданные таблицы.Размер базы данных, однако, по-прежнему составляет 20 Мб +.Все ошибки базы данных связаны с отсутствием таблиц.Метод копирования и записи таблиц отлично работает в версиях Android до Pie.