为什么 Android 应用程序 updates/patches 大小与其安装文件一样?

Why are Android app updates/patches sizes are like its setup files?

我在尝试从 PlayStore 更新时也有同样的疑惑。

一般来说,比如Windows,更新的时候,下载文件打补丁。从大小的角度来看,这些与其大约 3.5 GB 的设置相比要小得多。

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

尽管 Play 商店称它们为更新,但您实际上需要再次下载整个 Android 应用程序。在某种程度上,它仍然是一个更新,因为您确实升级到更新的 apk 版本,但并不完全是您想要的方式。这会占用您的带宽,但很容易。

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

如果应用程序的数据库模式在两个版本之间发生变化,Android 会在启动时通过调用生命周期方法通知应用程序它不是全新安装 onUpgrade() 应用程序有机会升级之前版本遗留的数据。

当您将此与 Windows 进行比较时,OS 和更新服务器均来自 Microsoft,并且它们必须协同工作以找出需要推送的内容(.dll、.ini , .sys 等),更新包的 format/compression 和安全隐患(某种加密以防止任何拦截流量的人注入恶意软件)。

Play 商店Google 没有提供这样的标准更新机制 查看更新 我相信是这样其他所有应用商店都是如此。显然,开发人员无法自行推出一个,因为更新由 Google 在设备端和服务器端处理。

但是,开发人员当然不会对此感到不满。测试新的 apk 更方便,查看它的工作和上传相同,而不是摆弄要推送的更改并在您错过某些内容时破坏应用程序。反正带宽便宜。


我最近刚刚发现,在两个 APK 之间的 Google I/O 2012 Google announced that they were working on a Smart Updates technology using some delta encoding algorithm. The idea was to compute the DIFF(有点像我们对两个源代码文件之间的文本所做的),在服务器端创建一个补丁,并且只通过电线.

AndroidPolice and TechCrunch 报道,该功能于当年晚些时候在 Play 商店 上线

Developers, Google said at I/O, won’t have to do anything to enable this feature and according to the folks over at Android Police, this feature quietly went live late last night or early this morning.

您可以在 this 视频中看到它的实际效果。请注意一旦进度条仅达到 40-50%,应用程序将如何开始安装。这绝对很棒,因为这不仅节省了 Google TB 的带宽,而且其纯服务器端方法意味着开发人员不必 fiddle 做任何事情。也许,这就是它在 android 开发者网站上未被提及的原因,因此需要时间才能被发现。


话虽如此,我的个人经历似乎与你的不谋而合。我看到我的大部分应用程序更新几乎都下载了整个应用程序。可能是我下载频率不高的缘故。跳过几个小的修改对我来说并不罕见,也许应用程序更改太多以至于无法从生成的补丁中获得任何规模的好处。

没有什么比 "update" 更适合 Android 应用了。它始终是一个完整的应用程序。之所以称为更新,是因为它是当前安装在设备中的应用程序的新版本。

但是当它是 "update" 时,整个应用程序并未完全下载。多年来,Google Play 只下载应用程序的一部分,并用差异修补当前安装的应用程序。因此,在 20MiB 的情况下,Google Play 可以下载几兆字节以在 phone 中重建新版本。 Google 来电是智能应用程序更新或类似的东西。