随着应用软件安装包越来越大,全量更新耗费的流量越来越多,增量更新可以很大程度上减少应用更新带来的流量消耗。
和游戏的检查更新,下载补丁包一致。
这里需要了解差分和 合并。
简单点:差分 对比新旧两个安装包,生成差异文件----> patch 也就是补丁~
这里使用bsdiff 进行增量更新;
bsdiff 差分的原理
Binary diff 是依赖 bzip 压缩库的开源库,其实是一种文件比较的一种算法实现,是一个二进制比较工具. 这里有两个文件:老版本的 app:old_app.apk 新版本的 app:new_app.apk. 首先是 Binarys diff:
1.首先将老文件 old_app 转为二进制文件.
2.在新文件 new_app 中找到和老文件相同的二进制数据.
3.在新文件生成的二进制数据中,分离 new_app 中老文件数据和新的二进制数据 patch.
然后是客户端进行的合成操作。需要用到JNI 使用bspatch 的C文件进行合成操作。用patch 补丁与本地老的apk 包进行合并。生成新的apk 包。
github地址:
https://github.com/qiyc1224/IncreUpdate-Android
怎样生成patch 包。
bsdiff.exe 文件 同级目录下
用cmd 命令 bsdiff old.apkname new.apkname 补丁名字。工具类下载地址:
链接:https://pan.baidu.com/s/1lww-4JGSK8ZPMAqX6GQ8OQ
提取码:awyg