java⽣成差分包,Android增量更新
增量更新的原理⾮常简单,就是将⼿机上已安装apk与服务器端最新apk进⾏⼆进制对⽐,并得到差分包,⽤户更新程序时,只需要下载差分包,并在本地使⽤差分包与已安装apk,合成新版apk。
bsdiff中,bsdiff.c⽤于⽣成查分包,bspatch.c⽤于合成⽂件。
接下来,我们分开说,需要做3件事。
1.在服务器端,⽣成这两个版本微博的差分包;
2.在⼿机客户端,使⽤已安装的旧版apk与这个差分包,合成为⼀个新版微博apk;
3.校验新合成的微博客户端⽂件是否完成,签名时候和已安装客户端⼀致,如⼀致,提⽰⽤户安装。
过程分析
1 ⽣成差分包
这⼀步需要在服务器端来实现,⼀般来说,每当apk有新版本需要提⽰⽤户升级,都需要运营⼈员在后台管理端上传新apk,上传时就应该由程序⽣成之前所有旧版本们与最新版的差分包。
例如: 你的apk已经发布了3个版,V1.0、V2.0、V3.0,这时候你要在后台发布V4.0,那么,当你在服务器上传最新的V4.0包时,服务器端就应该⽴即⽣成以下差分包:
V1.0 ——> V4.0的差分包;
V2.0 ——> V4.0的差分包;
V3.0 ——> V4.0的差分包;
ApkPatchLibraryServer⼯程即为Java语⾔实现的服务器端查分程序。
下⾯对ApkPatchLibraryServer做⼀些简单说明:
1.1 C部分
ApkPatchLibraryServer/jni 中,除了以下4个:
com_cundong_utils_DiffUtils.c com_cundong_utils_DiffUtils.h com_cundong_utils_PatchUtils.c
com_cundong_utils_PatchUtils.h
全部来⾃bzip。
com_cundong_utils_DiffUtils.c com_cundong_utils_DiffUtils.h
⽤于⽣成差分包。
com_cundong_utils_PatchUtils.c com_cundong_utils_PatchUtils.h
⽤于合成新apk⽂件。
其中,com_cundong_utils_DiffUtils.c修改⾃ bsdiff/bsdiff.c,com_cundong_utils_PatchUtils.c修改⾃bsdiff/bspatch.c。
我们在需要将jni中的C⽂件,build输出为动态链接库,以供Java调⽤(Window环境下⽣成的⽂件名为
libApkPatchLibraryServer.dll,Unix-like系统下为
android最新版libApkPatchLibraryServer.so,OSX下为libApkPatchLibraryServer.dylib)。
Build成功后,将该动态链接库⽂件,加⼊环境变量,供Java语⾔调⽤。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论