一.什么是增量更新?

增量更新的关键在于如何理解增量一词。来想想平时我们的开发过程,往往都是今天在昨天的基础上修改一些代码,app的更新也是类似的:往往都是在旧版本的app上进行修改。这样看来,增量更新就是原有app的基础上只更新发生变化的地方,其余保持原样。

与原来每次更新都要下载完整apk包的做法相比,这样做的好处显而易见:每次变化的地方总是比较少,因此更新包的体积就会小很多。

二.增量更新的原理

增量更新的原理非常简单,简单的说就是通过某种算法找出新版本和旧版本不一样的地方(这个过程也叫做差分),然后将不一样的地方抽取出来形成所谓的更新补丁(patch),也称之为差分包。客户端在检测到更新的时候,只需要下载差分包到本地,然后将差分包合并至本地的安装包,形成新版本的安装包,文件校验通过后再执行安装即可。本地的安装包通过提取当前已安装应用的apk得到。

三.新建应用,写native方法

1.写一个native方法

2.生成对应的.h文件

1, 从Android Studio的Terminal里进入到, /src/main/java 目录下,一定要刀这个文件夹下来执行命令操作。

2, 执行javah XXX.XX.XXX 即可,   XXX.XX.XXX是要生成.h文件的完整路径名,包名+文件名

3, 然后就会在当前目录下生成相应的.h文件。

3.我们需要将bspatch.c以及bzip的相关代码拷贝到jni目录下(bzip只保留.h头文件和.c文件)。并将bspatch.c中的main()方法名修改为executePatch(),并且修改其中bzip的引入头为#include "bzip2/bzlib.h".目录结构如下:

4.创建C文件并编辑(记得配置NDK环境)

5.修改build.gradle配置

6.生成os文件

输出目录:

去对应的项目空间中搜索“ndk”,并跟进到lib目录下,找到需要的文件复制出来

四.生成拆分包

1.开源库bsdiff:http://www.pokorra.de/coding/bsdiff.html

在应用中打包出一个旧的应用,在旧的应用中做一些修改,如:assets文件夹加些大的资源文件,让新版app大一些

把patch文件考到手机中(真是情况是从服务器下载下来),加入对应权限

github源码地址:https://github.com/LostDeer/HotUp