Обновление из стора роняет приложение, а чистая установка работает
В релизе добавили поле в таблицу заказов:
@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, миграцию не писали. На устройстве разработчика всё работает — он переустановил приложение начисто.
Что произойдёт у пользователей, которые обновятся из стора?
- Библиотека добавит новую колонку сама, значение будет пустым
- Ничего не произойдёт до первой записи в таблицу, а при записи поле просто проигнорируется
- База со старой схемой не совпадёт с ожидаемой, и при первом обращении приложение упадёт с ошибкой отсутствующей миграции
- Таблица молча пересоздастся под новую схему: краша не будет, но пользователи потеряют все локальные заказы, сохранённые предыдущей версией
