Чаще всего, если у вас происходит сбой при обновлении, а не при новой установке, это означает, что у вас есть некоторые постоянные данные, которые не совместимы с состоянием обновленного приложения.
Наиболее распространенные случаи:
- Данные базы данных не переносятся должным образом (или не переносятся вообще);может быть, между двумя обновлениями некоторые поля, измененные в коде и не совместимые с более старой версией базы данных?
- Ключи и значения в цепочке для ключей и / или пользовательские ошибки.Как и в базе данных, ваш код ожидает некоторые значения, но файл из предыдущих версий не знает этих значений.
- Файлы.Возможно, вы пишете / ожидаете некоторые файлы, отформатированные определенным образом или содержащие определенные данные.Но пользователи из более ранних версий могут не иметь этих файлов и, следовательно, могут вызвать сбой
По сути, все, что сохраняется, может привести к сбоям или ошибкам при обновлении до новой версии.Но поскольку вы тестируете из новой установки, вы всегда получаете правильные форматы во время тестов.
Если у вас происходит сбой, должно быть очень четкое исключение, сообщающее вам, что произошло, которое может помочь вам найтивопрос, и почему это произошло.Оттуда должно быть довольно просто изолировать файлы, требующие миграции.
Хорошие решения, которых можно избежать, это тестирование с использованием предыдущих установленных версий и отслеживание всех постоянных изменений, которые вы делаете.Как только вы решите что-то, что должно сохраниться, вы должны принять это во внимание, как только вы решите изменить это.Возможно, вам придется написать некоторый код, чтобы обновить файл и проверить его версию, прежде чем получить к нему доступ.Поэтому, если в базе данных версии 1 было две таблицы и три поля, вы должны это знать, а если вас это не устраивает, вы должны написать код для обновления базы данных, всего ее содержимого, и тогда только вы можете ожидать, что всеиметь новую базу данных.
Это еще одна хорошая идея: используйте версионность внутри своего приложения.Если ваше приложение имеет версию 40, но ваш файл все еще в формате версии 34, вы должны обновить его до версии 40, используя код, специфичный для этого обновления.
Миграция не является легкой задачей.Требует много тестирования и манипулирования данными.Я настоятельно рекомендую вам использовать модульные тесты для такой работы, прежде чем приступать к работе.