为什么Android应用更新/补丁大小与其安装文件类似?

Sne*_*sne 4 windows android updates apk

当我尝试从PlayStore更新时,我只是想知道同样的事情.

一般来说,比如Windows,在更新时,下载文件并对其进行修补.从大小的角度来看,与其大约3.5 GB的设置相比,它们非常小.

那么为什么它不适用于ANDROID应用程序呢?例如,WhatsApp的任何更新几乎等同于其原始安装文件(~18 MB).

Rav*_*yal 5

虽然Play商店会将这些更新称为更新,但您实际上会再次下载整个Android应用.在某种程度上,它仍然是一个更新,因为你实际上升级到较新的apk版本,但不是你想要的方式.这会对您的带宽造成负担,但这很容易.

但是,您的应用程序的设置(共享首选项)和数据(SQLite数据库或自定义文件)在此更新/安装过程中仍然存在,如果您再次手动卸载并安装应用程序的新版本,则不会出现这种情况.

在应用程序的数据库架构在两个版本之间发展的情况下,Android通过调用生命周期方法通知应用程序在启动时它不是全新安装,onUpgrade()其中应用程序有机会升级其先前版本遗留的数据.

当您将其与Windows进行比较时,操作系统和更新服务器都来自Microsoft,他们必须共同努力找出需要推送的内容(.dll,.ini,.sys等),更新捆绑包的格式/压缩和安全隐患(某种加密可防止任何人拦截流量引起恶意软件注入).

Google没有为Play商店提供此类标准更新机制, 请参阅更新,我相信所有其他应用商店的情况也是如此.显然,开发人员无法自行推出一个,因为Google在设备和服务器端处理更新.

但是,开发人员当然不会对此感到不满.测试新的apk更方便,看它工作和上传相同,而不是摆弄推送和破坏应用程序的更改,如果你错过了什么.无论如何,带宽很便宜.


我刚刚发现,在谷歌I/O 2012上,谷歌宣布他们正在使用一些增量编码算法开发智能更新技术.我的想法是计算两个APK之间的DIFF(有点像我们在两个源代码文件之间的文本),在服务器端创建一个补丁,只通过网络发送.

此功能去那年晚些时候通过报道Play商店AndroidPoliceTechCrunch的.

谷歌在I/O上表示开发人员不需要采取任何措施来启用此功能,据Android警察称,这个功能在昨晚或今天早上悄然上线.

您可以在视频中看到它的实际效果.注意一旦进度条仅达到40-50%,应用程序将如何开始安装.这绝对是非常出色的,因为这不仅可以节省谷歌数TB的带宽,而且它纯粹的服务器端方法意味着开发人员不必动摇任何东西.也许,这就是它在Android开发者网站上没有提及的原因,因此需要时间才能被发现.


话虽如此,我个人的经历似乎与你的一致.我看到我的大多数应用更新几乎下载了整个应用.也许是因为我不经常下载.对于我来说,跳过几个小修改并且应用程序可能会发生太大变化而无法从生成的补丁中获得任何大小的好处.