Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how can improve my app's Incremental updates efficiency

as you know,since android4.1,google has support smart app updates. and for users,when they updates their android apps which installed from google play, they only download what changed instead of downloading all of apk.

in my app,I want support smartAppUpdates too. and now I use bsdiff and bspatch.but I also think when I update my app, it's so big for user to download. and in my app's apk file,the libs is so big, my apk is about 11M,but the .so file which in libs is 9M. and when I update my app,I have never update the libs. for example:I use bsdiff like this

bsdiff old.apk new.apk diff.apk

the new.apk is 11.5M and the old.apk is about 11.4M but the diff.apk is about 6M.

and when I update my app,I have never update the libs.

when I try to zip the diff.apk for reduce it,but it's unuse. the diff.zip's size is equals the diff.apk's size

and how can I do this? is everyone help me? thanks in advance.

how can I improve my app's incrmental updates efficiency?

like image 935
lightman1988 Avatar asked Sep 30 '13 01:09

lightman1988


1 Answers

Unfortunately, there is not a lot that you can do with you delta updates size if you use Google Play to distribute your app. As far as I know, Google's Smart Application Update technology uses GDIFF delta encoding algorithm which compare old APK with new APK block by block. The problem with this approach is that APK is a compressed archive of files. Even small changes in files inside the archive can make your APK file look significantly different on a byte level. More info in this paper: http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6563072.

From my experience, the only thing you can do is not to use ProGuard, which is obviously bad for security reasons etc. Code obfuscated with ProGuard tends to generate 20% larger delta files.

like image 66
Nikolai Samteladze Avatar answered Dec 12 '22 17:12

Nikolai Samteladze