android - 关于安卓应用更新的问题

标签 android database upgrade

几个问题:

  1. 升级应用程序对存储的数据(即首选项和数据库)有何影响?系统是否执行新版本的全新安装(即删除旧版本然后安装新版本)或其他?

  2. 如果用户想要将存储的数据保留在共享首选项或 sqlite 数据库中怎么办?

  3. 如何模拟这种应用更新安装场景?如果我在模拟器上安装了版本“x”并且我执行了版本“x+1”的 adb 安装,我会收到 INSTALL_FAILED_ALREADY_EXIST 错误。我是否应该尝试在 Web 服务器上托管新的 apk,包管理器会将此作为更新吗?

最佳答案

  1. 所有数据都保留(文件、首选项、数据库)。数据库很特殊,因为您可以指定数据库版本,如果它检测到版本已更改,它将调用您的onUpgrade()。 .如果需要,您有责任将所有其他人更新到新版本。
  2. 正如我在 1 中所说,Android 坚持一切。您可以自行处理数据存储方式的任何变化。
  3. 使用 adb install -r/path/to/newApk.apk(注意 -r 标志,它告诉 adb 使用 reinstall )。基本上,工作流程应如下所示:

.

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 不会被删除。不过,您必须小心,因为这种删除会导致一些事情:

  • 与您的应用相关的所有进程都将被终止(因此,如果您的应用正在运行——任何 Activity 、服务、任何东西、所有组件都将被终止)。
  • 与您的应用相关的所有内容都会从系统中删除,例如通过 NotificationManager 推送的通知、通过 AlarmManager 设置的警报等。我不确定会发生什么到您可能拥有的任何小部件(从未使用过小部件)。

关于android - 关于安卓应用更新的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4143926/

相关文章:

upgrade - 无法获取某些文件,可能运行apt-get update或尝试使用--fix-missing

安卓开发 : How To Add App To The Application Chooser?

android - 用于音频的 MediaExtractor,得到意外的音频

sql - 将聚合数据存储在表或 View 中?

php - phpMyadmin 中的最大执行时间

mysql - SERIALIZED CONTEXT 数据截断问题 [SPRING BATCH]

delphi - Delphi 2009升级问题

java - 从 PHP 编码的 JSON 数据中获取 Null,输出到 Java

android - 如何创建主屏幕快捷方式以恢复热门 Activity

C#,MySQL 对象引用未设置为对象实例错误