Очистка данных при обновлении приложения (Android)

Как можно удалить все сохраненные ранее SharedPreferences и SQLite Database при обновлении приложения с PlayMarket? Формат сохраненных данных изменился в новой версии, и при установке поверх некоторых из старых версий приложение вылетает, а при чистой установке проблем не наблюдается. Заставить пользователей вручную удалять приложение, а потом устанавливать по-новой, я не могу.


Ответы (1 шт):

Автор решения: Vlad Orlinskas

Актуально только если исползуется Room

С базой проблема решается просто. Повышаете @Database(version = {цифра больше чем на проде}). Найдите место инициализации базы, вроде:

val builder = Room.databaseBuilder(context, AppDatabase::class.java, "database.db")

и добавьте строчку

builder.fallbackToDestructiveMigration()

Произойдет следующее: в случаи ошибки миграции, схема базы перезапишется на новую без вылетов.

С SharedPreferences чуть сложнее, вам нужно знать имена файлов, которые вы хотите удалить. Но обычно их и не нужно удалять, используйте свои, новые.

→ Ссылка