Google has an advanced diff tool specifically designed for compiled binaries called Courgette.

Is there any reason why they wouldn't use this in Android and the Google Play Store to download updates? In my basic understanding of Java, it seems like it shouldn't be any more difficult (perhaps even easier?) to create 'diffs' like this because of Java's "bytecode" nature. Am I wrong? Are there any security reasons?

Note: I know that unless someone from Google responds, we won't know for sure. But I'm asking for any obvious reasons - I'm an Android developer and sometimes get notes from people complaining about frequent updates, so it is somewhat relevant to me. :)



Incremental updates have the same problems as incremental backups; you must apply all of the increments in order from the last complete installation. It becomes impractical to do this forever; eventually everyone will have to get a complete update. Otherwise, you wind up selling a program that requires n incremental updates to get it current (where n is some arbitrarily large number, say, more than five).

From the store's point of view, it's easier just to transport the entire updated installation to the device than it is to track incremental revisions.

Remember, there are folks at the stores that vet these applications (especially at Apple); they must also apply all of the incremental updates before they can validate, and that's a pain in the ass. One installation, one thing to evaluate and keep track of.

  • 1
    Well, they (the stores) would still have access to the full app. But when sending it out to users, they would only send out the diffs. That would solve most of the issues you mention, right? – you786 Sep 12 '14 at 2:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.