Подтвердить что ты не робот

Вопросы по обновлению Android-приложений

Несколько вопросов:

  • Каковы последствия обновления приложения для сохраненных данных, т.е. настроек и базы данных? Выполняет ли система чистую установку новой версии (т.е. Удаляет старую версию, а затем устанавливает новую) или что-то еще?

  • Что делать, если пользователь хочет сохранить сохраненные значения данных в общих предпочтениях или базу данных sqlite?

  • Как я могу эмулировать этот сценарий установки приложения-обновления? Если у меня установлена ​​версия "x" на моем эмуляторе, и я делаю установку adb версии "x + 1", я получаю ошибку INSTALL_FAILED_ALREADY_EXIST. Должен ли я попробовать разместить новый apk на веб-сервере, будет ли диспетчер пакетов считать это как обновление?

4b9b3361

Ответ 1

  • Все данные сохраняются (файлы, настройки, базы данных). Базы данных являются специальными, так как вы можете указать версию базы данных, и если она обнаружит измененную версию, она назовет ваш onUpgrade(). Для всех остальных вы несете ответственность за обновление их до новой версии, если это необходимо.
  • Как я уже сказал в 1, Android все еще сохраняется. Вам решать любые изменения в способе хранения ваших данных.
  • Используйте adb install -r /path/to/newApk.apk (обратите внимание на флаг -r, который указывает adb на r einstall). В принципе, рабочий процесс должен быть следующим:

.

adb uninstall my.package
adb install /path/to/old.apk
# play with app, set preferences, databases, etc.
adb install -r /path/to/new.apk
# watch your app crash in an impressive ball of fire
# fix stuff
# goto 0

Другие примечания: Да, приложение выполняет чистое удаление вашего приложения перед установкой новой версии. Однако, как я уже сказал, ваше приложение data​​strong > не удаляется. Тем не менее, вы должны быть осторожны, потому что это удаление вызывает несколько вещей:

  • Любые процессы, связанные с вашим приложением, будут убиты (поэтому, если ваше приложение запущено - любые действия, службы, все, все компоненты будут убиты).
  • Все, что связано с вашим приложением, удаляется из системы, например, уведомления, нажатые через NotificationManager, аварийные сигналы, установленные через AlarmManager и т.д. Я не уверен, что происходит с любыми виджетами, которые могут быть у вас (никогда не работал с виджеты).

Ответ 2

  • Вы должны позаботиться об этом сами. Найдите метод onUpgrade() i.e.
  • Как вы должны заботиться о себе, вы можете дать пользователю возможность сделать все.
  • Вы должны убедиться, что у вас установлена ​​опция переустановки. Adb должен правильно обновить ваше приложение, чем.