当 iOS 为应用程序安装更新时,究竟会发生啥?

Posted

技术标签:

【中文标题】当 iOS 为应用程序安装更新时,究竟会发生啥?【英文标题】:What precisely happens when iOS installs an update to an app?当 iOS 为应用程序安装更新时,究竟会发生什么? 【发布时间】:2011-03-07 22:19:57 【问题描述】:

当您安装应用更新时,官方记录的行为是什么?

This question 提出了同样的问题,但answer 表示应用程序包已被替换,但所有其他文件夹均未触及,它没有提供任何文档。我有 reason 相信 app bundle 实际上没有被替换,所以我想确定一下。

请链接到文档!

【问题讨论】:

作为问答的后续。 Middaparka 的回答回答了问题的一部分——保留了哪些文件/数据。我试图弄清楚在这样的场景中调用了哪些委托方法(如果有的话): 1. 我们在 ios 4.x 上,后台处理开启 2. 应用程序进入后台(主页按钮) - applicationWillResignActive: & applicationDidEnterBackground: 被调用 3. 用户选择从 AppStore 更新 应用被杀了吗?是否调用了 applicationWillTeminate:?我猜(随着捆绑包被替换)该应用程序必须被杀死,对吧? @Pavel,见***.com/questions/3139588/… 【参考方案1】:

来自iOS Application Programming Guide(请参阅“文件系统”中的“应用程序更新期间保存的文件”部分):

当用户下载应用程序时 更新,iTunes 将更新安装在 一个新的应用程序目录。那么它 将用户的数据文件从 旧安装到新安装 删除前的应用程序目录 旧安装。中的文件 保证以下目录 在更新期间保留 进程:

<Application_Home>/Documents <Application_Home>/Library

虽然 其他用户目录中的文件可能 也被搬过来,你不应该 依靠他们在场后 更新。

您在 Why isn't my iPhone app bundle replacing the old one during an update? 问题中看到的是 Xcode 无法正确检测/推送更新资源到设备的问题,这是一种非常不同的情况。

【讨论】:

以上是关于当 iOS 为应用程序安装更新时,究竟会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章

当 iOS 应用程序确实进入后台时,TCP 和 UDP(使用多播)连接会发生啥情况

当 UIView 被隐藏时会发生啥?

更新时现有的 iOS 应用程序会发生啥情况?

当 4.2 发布时,iPad iOS 3.2 应用程序未标记为针对 iOS 4 测试会发生啥?

我编写了一个火花作业以在本地模式下运行,但是当我提交该作业时,我在纱线集群模式下运行它。在这种情况下究竟会发生啥?

当我更新我的应用程序时,本地文件会发生啥?