为什么应用程序更新会下载整个应用程序而不是仅下载“更新”?


10

我觉得很奇怪,要在Android(甚至iOS)上更新应用程序,整个应用程序会被下载,而不仅仅是实际的“更新”。

我觉得很奇怪的原因是因为在Windows中更新应用程序时,仅下载更新文件,而不下载整个应用程序,这更加实用,因为它既节省了时间,又节省了数据使用量。

对于大多数人来说,这似乎微不足道,但是当您需要下载一个巨大的应用程序而仅用于微小的功能添加/错误修复时,它就变成了真正的PITA。

是否有人对为什么实施此模型有解释?

Answers:


13

据我所知,它仅下载Jellybean 4.1及更高版本上的更新(称为“增量”)。显然,初始安装是完整的应用程序,但更新仅下载与当前安装版本(即其“增量”)相比已更改的数据。在更新大多数应用程序时,您不会看到任何不同,它看起来仍然像是在下载完整的应用程序,但是在某些较大的应用程序上,您会看到下载的“跳转”部分是否表明它只是在获取增量。

EngadgetAndroidCentral都有文章表明Play商店确实提供了增量更新


1
大型应用到底有多“大”?我的意思是我仍然需要下载整个Temple Run 2才能拥有Usain Bolt!无论如何,感谢您分享文章。
Gh0sT

我不确定。我知道对于Asphalt 6(至少1GB)之类的东西,它仅下载了过去的更改,可能是因为它仅适用于大型更新,或者可能无法生成增量Temple Run 2是否由于某种原因而更新?他们只有在少于一定百分比的变化时才能创建增量。(注意:所有这些只是我的想法)
bmdixon

三角洲不是即时的。如果您在将更新推送到Play商店后立即下载更新,则可能尚未生成增量。(只是一个猜测)
MatthieuHarlé13年

4

作为一名Android开发人员,我也有同样的想法,至少说一遍令人沮丧,因为有一次我忘记更改一行代码,但结果却错了一行,这导致该应用程序向左吐出了日志语句,对。

已经有人问过这个问题,但是这里也是话题,我认为这个问题应该保留。

所以问题:https : //stackoverflow.com/questions/18045290/for-mobile-app-updates-why-does-the-entire-app-need-to-be-downloaded-again

作为一名Android开发人员,我的猜测必须是软件打包的方式。每个Android应用程序都打包到一个名为的压缩文件中.apk。该文件包含用于使应用程序正常运行的所有代码,布局文件和图像。很难仅更新文件的一部分,尤其是在压缩文件时,如果开发人员启用了像ProGuard这样的安全功能,则几乎不可能实现补丁。

我确定Google也有一些安全原因不允许发布补丁。代码补丁往往会留下无法预料的安全漏洞和漏洞。


2
AFAIK增量更新已于大约半年前引入GPlay。是的,还有一些类似二进制差异的东西。基本上,.apk也可以将其简单地在Google服务器上解压缩,以比较各个版本并创建必要的增量。虽然我不知道它是如何实际完成的。
伊兹

我现在对此非常感兴趣,您是否必须选择以开发人员身份加入Google还是由Google为您管理?
约翰,

1
@John Google是自动执行的,开发人员无需执行任何操作。
onik

-1

基本上,Android应用程序包文件(* .apk)文件是在准备发布应用程序代码后创建的,此文件是在编译和构建后以及通过DALVIK转换过程创建的,

该文件包含所有资源,例如您的图像,音频,布局,类,

至于Windows,.NET框架和Linux框架都以不同的方式工作...

如果您只想替换的某些代码,则可以在android中这样做,但出于安全性考虑,您需要再次对该应用进行签名。

DALVIK的工作是不可逆的过程,因此,如果添加了新功能,旧版本将如何在不知道的情况下访问它?

因此,它需要更新整个应用程序,以便它可以正常工作和运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.