10

I find it rather strange that for updating an app in Android (or even iOS) the entire app is downloaded instead of only the actual "Updates".

The reason I find this strange is because in Windows while updating an app, only the update files are downloaded -- not the entire app -- which is more practical as it saves both time and data usage.

This would seem trivial to most, but when you need to download a huge app just for a tiny feature addition/bug fix it becomes a real PITA.

Does anyone have an explanation as to why this model was implemented?

3 Answers 3

13

As far as I know it does download just the updates (referred to as the "delta") on Jellybean 4.1 and above. Obviously the initial install is the full app but updates only download the data that has changed from the current installed version (i.e. the "delta" of it). You won't see anything different when updating most app, it will still look like it's downloading the full app but on some larger apps you will see if 'jump' parts of the download which indicates that it is just getting the delta.

Engadget and AndroidCentral both have articles indicating that the Play store does provide delta updates

3
  • 1
    Just how "large" is the larger app? I mean I still need to download the entire Temple Run 2 just to have Usain Bolt! Anyway thanks for sharing the articles.
    – Gh0sT
    Commented Aug 21, 2013 at 13:36
  • I'm not sure. I know that for something like Asphalt 6 (which is at least 1GB) that it has only downloaded the changes in the past.It might be that it is only applied to large updates, or maybe it wasn't possible to generate the delta for the Temple Run 2 update for some reason? They may only create the delta when less than a certain percentage has changed. (NB. All of this is just my thoughts)
    – bmdixon
    Commented Aug 21, 2013 at 13:57
  • Delta aren't instantaneous. If you download the update just after it has been pushed to the play store, delta may not have been generated for now. (just a guess) Commented Aug 22, 2013 at 19:45
4

As an Android Developer I thought the same thing, it was frustrating to say the least because one time I forgot to change one line of code, and it went out with that one line wrong, which caused the app to spit out log statements left and right.

This question has been asked on SO, but it is also on-topic here and I think this question should stay.

SO Question: https://stackoverflow.com/questions/18045290/for-mobile-app-updates-why-does-the-entire-app-need-to-be-downloaded-again

As an Android Developer, my guess would have to be the way the software is packaged. Every android app gets packed into a compressed file called an .apk. This file holds all of the code, layout files and images used to make the app function. It is kind of hard to update just part of a file, especially when it is compressed and if the developer has security features enabled like ProGuard, it would be next to impossible to implement a patch.

I'm sure Google also had some security reasons for not allowing patches. Code patches tend to leave unanticipated security holes and vulnerabilities.

3
  • 2
    AFAIK delta updates have been introduced to GPlay about half a year ago. And yes, there is also something like binary diffs. Basically, the .apk could also simply be unpacked on Google servers to compare between versions and create the necessary deltas. Though I don't know how it is actually done.
    – Izzy
    Commented Aug 21, 2013 at 14:34
  • I am very interested in this now, do you have to opt into this as a developer or does Google manage this for you?
    – John
    Commented Aug 21, 2013 at 14:46
  • 1
    @John Google does it automatically, no actions need to be taken by the developer. Commented Aug 21, 2013 at 17:38
-1

Basically Android application package file (*.apk) file is created after the app code is ready to publish, This file is created after compilation and building and from DALVIK conversion process,

This file contains all of the resources i.e your images, audio, layouts, classes,

And As far as windows concern the .NET framework and Linux framework both works in different manner...

If you want to replace only certain code of the you can do so in android but for security you need to sign that app again..

What DALVIK do is irreversible process, so if new function is added how the old version will access it without knowing it??

That's why it requires to update whole app so that it can work and function properly..

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .