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

为什么Android应用程序更新/补丁大小与安装文件相似?,android,windows,apk,updates,Android,Windows,Apk,Updates,当我尝试从PlayStore更新时,我也在想同样的问题 一般来说,比如Windows,当它更新时,下载文件并对其进行修补。从大小的角度来看,与3.5 GB左右的设置相比,这些设备要小得多 那么为什么它不适用于ANDROID应用程序呢?例如,WhatsApp的任何更新几乎等同于其原始安装文件(~18MB)。尽管Play Store将其称为更新,但实际上您再次下载整个Android应用程序。在某种程度上,它仍然是一个更新,因为您实际上升级到了一个更新的apk版本,但不是您想要的方式。这会对你的带宽造

当我尝试从PlayStore更新时,我也在想同样的问题

一般来说,比如Windows,当它更新时,下载文件并对其进行修补。从大小的角度来看,与3.5 GB左右的设置相比,这些设备要小得多


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

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

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

如果应用程序的数据库模式在两个版本之间演变,Android会在启动时通过调用生命周期方法
onUpgrade()

当您将其与Windows进行比较时,操作系统和更新服务器都来自Microsoft,它们必须协同工作,以确定需要推送的内容(.dll、.ini、.sys等)、更新包的格式/压缩和安全含义(某种加密,以防任何拦截流量的人注入恶意软件)

谷歌还没有为Play Store see update提供这样的标准更新机制,我相信其他应用商店也是如此。显然,开发人员无法自行推出,因为更新是由谷歌在设备和服务器端处理的

但是,开发人员肯定不会对此感到不高兴。测试新的apk更加方便,可以看到它工作并上传相同的apk,而不是摆弄要推送什么更改,如果你错过了什么,就破坏应用程序。无论如何,带宽是便宜的


我最近刚刚发现,在谷歌公司,他们正在开发一种智能更新技术,使用一些增量编码算法。其想法是计算两个APK之间的补丁(有点像我们对两个源代码文件之间的文本所做的),在服务器端创建一个补丁,然后只通过网络发送

据和报道,该功能于当年晚些时候在Play Store上上线

谷歌在I/O会议上表示,开发者不必做任何事情来启用 据安卓警察局的人说,这项功能 这部专题片在昨晚深夜或今天凌晨悄然播出

你可以在视频中看到它的实际行动。请注意,当进度条仅达到40-50%时,应用程序是如何开始安装的。这真是太棒了,因为这不仅节省了谷歌数TB的带宽,而且它的纯服务器端方法意味着开发者不必做任何事情。也许,这就是为什么它在android开发者网站上没有被提及,所以需要时间才能被发现


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

没有什么比安卓应用程序的“更新”更好的了。它总是一个完整的应用程序。它被称为更新,因为它是当前安装在设备中的应用程序的新版本


但当它是一个“更新”时,整个应用程序并没有完全下载。多年来,Google Play只下载应用程序的一部分,并用不同的方式修补当前安装的应用程序。因此,在20MB的情况下,Google Play只需下载几兆字节就可以在手机中重新构建新版本。Google calls是智能应用程序更新之类的东西。

几乎所有更大的应用程序在更新时,下载进度会在几兆字节后停止,然后立即跳到100%——这是智能更新,并不意味着它已经下载了整个应用程序。它从不跳到100%,只是跳到前面开始“安装”应用程序。几兆字节太乐观了;节省总是取决于你的应用程序当前安装的版本有多旧。向前跳过并启动安装过程会立即跳转到100%的下载过程。几天前最新的WhatsApp下载了大约4.5MiB,并开始在我的手机上安装该应用。这与整个~18MiB应用程序有很大区别。将WhatsApp(在手机上)的情况推广到Play Store上所有可用的应用程序是不正确的。我以前说过,我希望你这次明白了:补丁大小总是取决于你试图从哪个版本更新;版本越旧,您的下载大小就越接近新应用的大小。