Вступить в клуб →
средняявопросСеть и хранение данных

Обновление из стора роняет приложение, а чистая установка работает

В релизе добавили поле в таблицу заказов:

@Entity(tableName = "orders")
data class OrderEntity(
    @PrimaryKey val id: String,
    val title: String,
    val comment: String   // новое поле
)

@Database(entities = [OrderEntity::class], version = 2)
abstract class AppDatabase : RoomDatabase() { /* ... */ }

Номер версии базы подняли с 1 до 2, миграцию не писали. На устройстве разработчика всё работает — он переустановил приложение начисто.

Что произойдёт у пользователей, которые обновятся из стора?

  • Библиотека добавит новую колонку сама, значение будет пустым
  • Ничего не произойдёт до первой записи в таблицу, а при записи поле просто проигнорируется
  • База со старой схемой не совпадёт с ожидаемой, и при первом обращении приложение упадёт с ошибкой отсутствующей миграции
  • Таблица молча пересоздастся под новую схему: краша не будет, но пользователи потеряют все локальные заказы, сохранённые предыдущей версией

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела