Отключить WAL для приложения, для которого у меня нет исходного кода? - PullRequest
1 голос
/ 30 марта 2019

У меня есть apk для приложения, и он не совместим с Android 9, потому что теперь он вызывает WAL вместо режима журнала. Есть ли способ отключить WAL без доступа к исходному коду приложения?

1 Ответ

2 голосов
/ 30 марта 2019

Если у вас нет контроля над источником приложения, тогда я не верю, что вы можете изменить режим.

Сказав это, наиболее вероятная причина того, что приложение не работает, - это использование ранее существующей базы данных (скопированной из папки активов).

Если это так, и у вас есть доступ к другому устройству, на котором работает приложение (т. Е. Меньше, чем Android 9), и у вас есть доступ к файлу базы данных (могут потребоваться корневые устройства). Существует большая вероятность того, что копирование этого файла базы данных из папки после удаления файлов -shm и -wal на устройстве Android 9 (опять же, возможно, потребуется рутирование) будет работать (хотя будет использоваться WAL), но проблема заключается в том, что Скорее всего, чисто копирование уже существующей базы данных.

  • Я провел тест с использованием устройств 5.0 и 10.0 (эмуляторы), и это сработало нормально.

Однако, если у вас был доступ к коду: -

Вы можете использовать метод SQLiteDatabase disableWriteAheadLogging . Это можно было бы выполнить, переопределив метод onConfigure , если используется подкласс SQLiteOpenHelper.

Если вы не используете подкласс SQLiteOpenHelper, вы можете установить режим журнала, используя journal_mode PRAGMA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...