When submitting an update to an app to the app store (via iTunes Connect?), is the update necessarily a whole binary? Can an update come in the form of a patch? If a second version of an app shares a lot of assets and logic from the previous version, does all that logic/resources get reinstalled wholly regardless?
3 回答
没有补丁。它作为一个完整的只读包安装。旧捆绑包被新捆绑包替换。
应用程序数据被保留(即文档文件夹,NSUserDefaults)。
正如大家之前所说的,苹果不提供热补丁原生应用程序的方法,而且它有一个明确的限制——“不能远程代码注入”。
我唯一可以补充的是,使用 javascript 平台的混合应用程序允许您远程替换 JS 文件,因此您实际上可以远程更改功能。(无需发布新版本)我见过的其他解决方案是灰色的区域并允许您远程运行Lua 脚本以更改应用程序功能。
我们@ Rollout.io有不同的方法,我们允许您对生产应用程序进行热补丁,而无需在本机应用程序上注入代码,您可以在此处阅读有关该技术如何工作的更多信息
Rollout 旨在帮助移动开发人员解决生产质量问题、热补丁生产应用程序、调试生产环境、添加/删除分析等。
披露:我来自 Rollout.io 团队。
iOS 6 现在支持增量应用程序更新。这太棒了,让 Real Racing 3(一个 1.1GB 的应用程序)在大约 30 秒而不是 20 分钟内更新!
https://developer.apple.com/library/ios/#qa/qa1779/_index.html
问:对于已经安装了以前版本的用户,如何减少我的应用更新的下载大小?
A:从 iOS 6 开始,应用商店会自动为所有提交到商店的新版本应用生成更新包。此软件包针对将应用程序从一个版本更新到另一个版本进行了优化,并包含在应用程序的先前版本和应用程序的新版本之间发生更改的文件,不包括未更改的文件。
最佳使用时,更新包的下载量比应用程序的完整包要小得多,并且更新将更快地安装。此外,在许多情况下,此机制允许通过蜂窝网络下载大型应用程序的更新,其中应用程序下载受到大小限制。
除新增内容外,更新包还包含有关如何将应用程序的先前版本转换为应用程序的新版本的说明。将添加新文件,修改后的文件将替换为更新的文件,删除的文件将作为此转换的一部分被删除。就开发者和用户而言,这个过程是完全透明的,由此产生的更新应用程序将与完整下载其应用程序的相应更新版本没有区别。
上面的链接中提供了针对开发人员的进一步说明。