Google I/O 2012大会上Google预览了Jelly Bean 4.1系统的一些新功能,由于是x.1的版本号,所以改进不是很大,但是还是有一些给力的内容,其中的一条就是Smart app updates,也就是增量升级,你可以只下载应用升级的数据,而不必下载整个应用了。在2012年9月29号,腾讯的应用宝也退出了增量更新功能,举个例子来说,比如你现在要更新微信,旧版有10M,新版有14M,那么你不需要下载完整的14M文件,只需要下载更新部分就可以,而更新部分可能只有5、6M(不是14减10)。腾讯发来一份他们对增量升级的研究报告:


现在就能大概知道增量升级的原理了:服务器端比较差异生成patch,用户下载的是patch文件,手机上的商店程序需要把data/app下面的相应apk拷贝到sd卡上然后与patch合成,最后生成新的apk。

网上搜索到大神写的一篇博客,大家可以参考:http://blog.csdn.net/hmg25/article/details/8100896。

这里借用一个小实验,实验材料请大家去http://download.csdn.net/detail/hmg25/4676737下载。我这里把实验步骤演示一下(在win7下)。

首先模拟服务器端的生成patch的过程:

bsdiff.exe   ..\iReader1.6.2.0(v35).apk   ..\iReader1.8.0.1(v40).apk   ..\iReader.patch
然后是手机上的组装过程:

bspatch.exe  ..\iReader1.6.2.0(v35).apk   ..\new.apk    ..\iReader.patch
最后散列,比较一下iReader1.8.0.1(v40).apk和new.apk文件:

文件名称:test\iReader1.8.0.1(v40).apk
文件大小:3400660 字节
修改时间:2012年10月22日 23:48:38
MD5 :4DBCE86AAE8987A8B115670D1AC2364D
SHA1 :DE249C9C3A961F8A5FF86073BA4EDEFE4627F1B1
CRC32 :285E9531


文件名称:test\new.apk
文件大小:3400660 字节
修改时间:2012年11月22日 14:53:08
MD5 :4DBCE86AAE8987A8B115670D1AC2364D
SHA1 :DE249C9C3A961F8A5FF86073BA4EDEFE4627F1B1
CRC32 :285E9531

可以看出散列值是一样的,说明生成的新的apk是OK的。

这里面涉及的知识还是比较多的,比如服务器端使用脚本语言编写自动化脚本比较差异,手机上需要使用JNI去调用bspatch的功能,嗯,我还得加油,早日做出个原型来。今天就到这里。




更多相关文章

  1. recovery的一些开发点滴
  2. 【总结问题】在Eclipse中安装ADT(Android(安卓)Development Tool
  3. Android启动service下载失败后stopService,重新启动service下载出
  4. Android源码学习之环境搭建(Ubuntu下载Android源码)
  5. Android(安卓)在一个APP内打开另一个APP
  6. Android(安卓)Launcher研究(一)-----------图文详解手把手教你在
  7. 【Android】用Cubism 2制作自己的Live2D——android sdk样本的下
  8. 我的第一个Android升级版本
  9. 如何取得Android(安卓)系统的源代码--全部

随机推荐

  1. 【Android(安卓)应用开发】Activity 状态
  2. Android之用HttpURLConnection参数以XML
  3. android 中按键响应实例
  4. android http UrlEncode 中文乱码等问题
  5. android实现分享功能
  6. Android开发--在Eclipse中使用android.su
  7. Android分包机制个人总结
  8. android实现音乐播放器(进度条)
  9. ReactNative项目打包(Android(安卓)&& IO
  10. Android屏幕适配 - DP适配存在问题详解