android增量更新简单实现(自用)
1.增量更新:通过差分工具生成两个不同版本的包的差分包,当需要时可以通过老包和差分包生成新的包
全量更新:直接给一个完整的安装包,当差分包很大或者版本太多时,采用全量更新
2.差分包生成:BsDiff库:自己下载源码编译生成window版本exe工具,或者通过cgyWin64直接在安装时搜索BsDiff进行安装
生成差分包:bsdiff old.apk new.apk diff.patc
旧包和差分包合成新包:bspatch old.apk new.apk diff.patch
BsDiff算法(差量更新算法)思想:
利用old文件中内容,尽可能少加入新内容来构建新包。思路是对两个包做子字符串匹配或用hash技术提取公共部分,将新包的剩余的部 分打包成patch包,生成新包时用copying和insertion合成。
3.根据差分包生成新包: 1.用BsDiff的BsPatch 2.用ApkPatchLibrary
4.ApkPatchLibrary合成新包:(github地址:https://github.com/cundong/SmartAppUpdates)
1.配制ndk环境变量,把源码下载,c文件mk文件还有native方法的配置都有现成,进入ApkPatchLibrary\jni中,cmd->ndk-build, 编译生成libApkPatchLibrary.so导入到android工程中(不会编译so文件的百度)
2.在java文件夹下面创建名为com.cundong.utils的包,创建PatchUtils工具类,定义patch native方法
3.加载so库
static {
System.loadLibrary("ApkPatchLibrary");
}
4.服务器获取新老版本的md5,校验老版本的md5,获取应用程序自身apk路径
5.根据路径跟patch的路径,调用PatchUtils.patch()native方法生成新包
6.校验新包md5
*
7.安装新包