The Google Play store supports (since Aug 2012) a new feature called Smart App Updates, that allows downloading only the necessary "delta" when upgrading an app.
I have found no documentation for developers regarding this feature, thus I don't know how to optimize my app to make sure it benefits from this great mechanism.
So, does anyone know:
- What are the technical impacts (if any) that would be good to know for the developers?
(I suppose a new, full-size APK is built on the user's device, or maybe the unchanged data is stored somewhere else?)
- Is the reutilization of unchanged data from the previous versions limited to certain resources? (like files in the
asset
folder)
Step by step:
- GDIFF, a delta encoding algorithm, is used to compute the difference between the
old application version and the new one. This is done on the server
side. This computed difference is usually referred to as a
patch file.
- The patch file is transferred to the device.
- The Google Play Store app uses the patch file and the old application to construct the new version of the application.
- The new version is installed on the device.
Currently, patch size is 25% of the new application version size (on average). Thus, you get 75% traffic saving on average. The trade off is that you have to do more computations on the end device to deploy the received patch, depending on the delta encoding technique. GDIFF is extremely simple, and has minimal overhead. The difference is computed between APK packages (all information in the APK is used). As was mentioned, developers don't need to do anything to benefit from this new feature.
The reason why there's no documentation is because it's all 100% done on the server side by google without any external interaction. Developers shouldn't worry at all about this functionality. Just develop your app you normally would.
To be fair I don't believe they want anyone to know how it works because I'm assuming it's part of their intelectual property.