Вопросы об обновлении приложения для Android - PullRequest
17 голосов
/ 10 ноября 2010

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

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

  2. Что если пользователь захочет сохранить сохраненные данные, скажем, значения в общем предпочтении или в базе данных sqlite?

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

Ответы [ 2 ]

31 голосов
/ 10 ноября 2010
  1. Все данные сохраняются (файлы, настройки, базы данных).Базы данных являются особыми, так как вы можете указать версию базы данных, и если она обнаружит измененную версию, она позвонит вам onUpgrade().Для всех остальных вы отвечаете за обновление их до новой версии, если это необходимо.
  2. Как я уже говорил в 1, Android сохраняет все.Вы должны обрабатывать любые изменения в способе хранения ваших данных.
  3. Используйте 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

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

  • Любые процессы, связанные с вашим приложением, уничтожаются (поэтому, если ваше приложение работает - любые действия, службы, все, что угодно, всекомпоненты будут уничтожены).
  • Все, что связано с вашим приложением, удаляется из системы, например уведомления, отправляемые с помощью NotificationManager, сигналы тревоги, установленные с помощью AlarmManager и т. д. Я не уверен, что происходит слюбые ваши виджеты (никогда не работали с виджетами).
1 голос
/ 10 ноября 2010
  1. Вы должны позаботиться об этом сами. Ищите onUpgrade() метод, т.е.
  2. Поскольку вы должны заботиться о себе, вы можете дать пользователю возможность делать все.
  3. Вы должны убедиться, что у вас установлена ​​опция переустановки. Adb должен обновить ваше приложение правильно, чем.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...