几个问题:
升级应用程序对存储的数据(即首选项和数据库)有何影响?系统是否执行新版本的全新安装(即删除旧版本然后安装新版本)或其他?
如果用户想要将存储的数据保留在共享首选项或 sqlite 数据库中怎么办?
如何模拟这种应用更新安装场景?如果我在模拟器上安装了版本“x”并且我执行了版本“x+1”的 adb 安装,我会收到
INSTALL_FAILED_ALREADY_EXIST
错误。我是否应该尝试在 Web 服务器上托管新的 apk,包管理器会将此作为更新吗?
最佳答案
- 所有数据都保留(文件、首选项、数据库)。数据库很特殊,因为您可以指定数据库版本,如果它检测到版本已更改,它将调用您的
onUpgrade()
。 .如果需要,您有责任将所有其他人更新到新版本。 - 正如我在 1 中所说,Android 坚持一切。您可以自行处理数据存储方式的任何变化。
- 使用
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/