http://www.zhihu.com/question/21154099
http://blog.csdn.net/hmg25/article/details/8100896
91助手和Google Play的智能升级原理是什么?修改
前不久的google io 推出了应用智能升级,就是不用下载整个包,而是下载单纯的更新部分就可以完成app的升级,而iphone版的91助手也退出了这个功能,这里的原理是什么?望各位不吝赐教!
这是来自去年某一次google发布会提出的新内容。
从那时起,android sdk便提供了一个基于差分的增量升级包的制作工具。所以开发者可以轻易制作差分升级包。这个事情必须要由开发者完成,因为它需要和原先的软件有相同的数字签名。
豌豆莢等收集了这些差分升级包,并提供给用户。
多家android 服务提供商都提供了智能更新服务, 包括友盟, 豌豆荚,百度, Google Play等。 Google Play是最早推出该功能的。 由于该功能对于应用开发者和终端用户都是透明的, Google 也没有过多宣传这个功能, 只是android police 上有人破解了。
关于友盟的功能,官方页面的解释如下:
http://dev.umeng.com/doc/document_update_android.html
友盟自动更新SDK从2.0版本开始支持增量更新。增量更新下载的是您上传到友盟服务器最新版本的APK和用户手机上的APK的差异,而不需要下载新版完整包。增量更新通过减小下载升级包的方式极大加快用户升级速度,提高用户升级体验。而所有的增量更新过程完全对开发者透明, 您不需要做任何额外的工作,只需要添加libs 目录下的libs/armeabi/libbspatch.so。 集成SDK接口完全相同。关于增量更新更多问题, 请参考FAQ。
友盟增量更新的原理是什么?
应用集成友盟自动更新SDK之后,SDK会在应用启动时将手机端的Version Code 和应用APK文件的MD5 值发送到友盟的服务器端。服务器通过对MD5值查找到老版本的APK, 同新老版本的APK做diff, 生成patch 文件,返回给SDK。 SDK 再将patch 文件和手机上的老版本APK文件合成生成新版本的APK。手机端生成的新版APK文件的MD5值会和服务器端的新版APK MD5值保持严格一致。在此过程中, 要求友盟服务器必须存在新老两个版本的APK文件。 如果您发现不能使用增量更新, 可能是友盟服务器端没有老版本的APK,需要您先上传老版本的APK, 再上传新版本的APK。
OTA功能?
libBSPatch.so:支持增量更新功能的库文件
libwebp.so 好像是WebP的支持库,WebP是由谷歌推出的新一代图片格式,在压缩方面比当前JPEG格式更优越,图像体积要比JPEG格式图像小40%.