几个问题 :
升级应用程序对存储的数据(即首选项和数据库)有什么影响?系统是否执行新版本的全新安装(即删除旧版本然后安装新版本)或其他操作?
如果用户想要保留存储的数据(例如共享首选项或 SQLite 数据库中的值)怎么办?
如何模拟此应用程序更新安装场景?如果我的模拟器上安装了版本“x”并且我执行了版本“x+1”的 adb 安装,我得到INSTALL_FAILED_ALREADY_EXIST
错误。我应该尝试在 Web 服务器上托管新的 apk,包管理器会将其视为更新吗?
- 所有数据都会保留(文件、首选项、数据库)。数据库很特殊,因为您可以指定数据库版本,如果它检测到版本更改,它将调用您的onUpgrade() http://d.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html#onUpgrade(android.database.sqlite.SQLiteDatabase,%20int,%20int)。对于所有其他人,您有责任根据需要将其更新到新版本。
- 正如我在 1 中所说,Android 会保留一切。您可以自行处理存储数据方式的任何更改。
- Use
adb install -r /path/to/newApk.apk
(注意-r
flag,告诉 adbr电子安装)。基本上,工作流程应该如下:
.
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在安装新版本之前删除您的应用程序。然而,正如我所说,您的应用程序data没有被删除。不过,您必须小心,因为此删除会导致一些问题:
- 与您的应用程序相关的任何进程都将被终止(因此,如果您的应用程序正在运行 - 任何活动、服务、任何内容、所有组件都将被终止)。
- 与您的应用程序相关的任何内容都会从系统中删除,例如通过
NotificationManager
,通过设置警报AlarmManager
等等。我不确定您可能拥有的任何小部件(从未使用过小部件)会发生什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)