克里斯蒂安在这里说:当用户安装更新时,您的应用程序数据将保留。
但它必须与package name
之前的应用程序的更新相同才能检测到。
EboMike 在警告 Android 用户应用程序更新可能导致旧应用程序版本丢失数据?说:
坦率地说,由于升级而丢失数据是不可接受的。
编辑:
通常,SharedPreferences(以及其他用户数据)会在更新过程中保留,但有时,由于一些“未知”问题,数据可能会丢失,我猜它是你无法控制的。因此,您可以简单地相信 SharedPreferences 将被保留(参见此处)。
所以,如果你想避免在升级过程中清除用户数据,你必须将主要数据保存在外部存储中(这可以是可移动存储介质,如 SD 卡或内部、不可移动的存储。)而不是为您的应用程序私有。或者至少在升级之前为用户备份数据。然后在您(升级的)应用程序的第一次运行中,检查外部存储中是否有任何备份文件。
如果您想知道升级应用程序必须/可以发生什么事情?,我没有对此进行任何很好的描述。它与,,和其他主题是复杂和相关的。我的Android Security
意思Application signing
是copy protection
如果您在上述任何字段中更改您的应用程序的状态,它会导致不同的结果。
例如,如果您CHANGED COPY PROTECTION FROM ON to OFF OR OFF to ON
,您的应用程序将被更新,但会导致您的所有共享偏好丢失,文件访问是不可能的......。
尽管您必须注意条件导致您的新应用程序being considered
作为以前应用程序的更新(请参阅无法更改的事情)。
此外,您必须注意您的代码,这可能会导致删除数据库中的数据(请参阅使用预加载的 SQLite 更新应用程序)。
但最终,如果小心,你可以说:
更新过程仅替换 apk 文件(以及其中的内容,例如可绘制文件,...)并且不会更改数据库、共享首选项和在运行时生成的任何其他文件(可能在这种情况下,新应用程序安装与前一个 App 的 UID 相同的 UID)。
您可以查看这些页面以获取更多详细信息:
帮助!?在市场上更新我们的应用程序会删除已保存的 SharedPreferences。
市场复制保护在更新后完全中断文件访问
有人可以解释应用程序更新过程吗?