本项目为增量升级Demo版本, 主要用与测试相关封装代码,及导出相关jar包.
项目采用了jni调用方式,不用自己ndk-build, 当然也支持自定义 android.mk, 自行ndk-build手动编译
bsdiff工具gcc编译后的工具放在 ./tool/bsdiff 下

项目说明:

考虑到增量升级部署问题,可以优化增量升级匹配过程,缩小目标范围, 框架成熟稳定后可推广到公共平台.

项目中用的工具包:

  • bsdiff下载, 也可以从安卓源码中得到: \external\bsdiff
  • bzip2下载, pc上可以直接安装使用,方法:sudo apt-get install libbz2-dev .下载是用与封装成java代码共bsdiff依赖

    产生差分包: bsdiff oldfile newfile patchfile
    合并差分包: bspatch oldfile newfile patchfile

流程总结

  1. 服务器生成各个提供整理升级的patch文件及新文件指纹.
  2. 客户端到服务器查询是否有更新.
  3. 有更新则,上传自己的版本号,查询下载相应的patch文件.
  4. 客户端用patch生成新文件, 并生成指纹与服务器端新文件指纹对比.
  5. 指纹相同则,增量升级成功,客户端应用生成的新文件.指纹不同则抛弃增量升级,改为普通全量升级.

数据库增量升级流程优化方案

  1. 增量包需要有rd本地产生,然后交与qa配置到后台测试。
  2. 增量包固定的数据库格式号约定为: -1。
  3. 增量升级包需要和升级包同时配置,增量包才能生效。
  4. 相关log : adb logcat | grep –color=auto “SmartUpdate|xxxManager”
  5. 不影响原有的数据库更新及拉取策略,及相关逻辑和上报 (可能会附加一些增量升级的上报,待定). (需要更新时会先检测是否有增量升级,有 的话走增量升级,增量升级失败,会反回来走
    正常升级)。
  6. 数据库目前只针对上个版本提供升级包,客户端未命中的,还是走原来的流程普通升级。
  7. 增量升级对大多数文件都有效,框架成熟后,可以应用与其他云端数据的更新,其使用价值非常大。