有关Android应用程序更新的问题

时间:2010-11-10 11:22:23

标签: android database upgrade

几个问题:

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

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

  3. 如何模拟此应用更新安装方案?如果我的emualator上安装了版本'x',并且我安装了版本'x + 1'的adb,则会出现INSTALL_FAILED_ALREADY_EXIST错误。我是否应该尝试在Web服务器上托管新的apk,包管理器会将此作为更新吗?

2 个答案:

答案 0 :(得分:31)

  1. 所有数据都存在(文件,首选项,数据库)。数据库是特殊的,因为您可以指定数据库版本,如果它检测到版本已更改,它将调用您的onUpgrade()。对于所有其他人,如果需要,您有责任将其更新为新版本。
  2. 正如我在1中所说,Android坚持一切。由您来处理存储数据的方式的任何变化。
  3. 使用adb install -r /path/to/newApk.apk(注意-r标志,告知adb r einstall)。基本上,工作流程应如下:
  4. 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 :(得分:1)

  1. 你必须自己照顾好自己。寻找onUpgrade()方法,即
  2. 由于您必须自己照顾,您可以让用户做任何事情。
  3. 您应确保已设置重新安装选项。 Adb应该正确更新您的应用程序。