Android 增量更新教程

一.什么是增量更新?

增量更新的关键在于如何理解增量一词。来想想平时我们的开发过程,往往都是今天在昨天的基础上修改一些代码,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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在前几年,整体移动网络环境相比现在差很多,加之流量费用又相对较高,因此每当我们发布新版本的时候,一些用户升级并不是...
    涅槃1992阅读 5,535评论 2 39
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,964评论 25 709
  • @[增量更新,差分包,bsdiff/patch] 背景 随着Android app的不断迭代升级,功能越来越多,a...
    SunYo阅读 15,145评论 2 7
  • 最近就是在练习ndk开发,刚好遇到android增量更新的话题,主要是工具的运用,略带使用第三方so库的流程~~~...
    红黑军团号阅读 581评论 1 3
  • 1.概述 1.1.什么是应用增量更新 当我们要更新一个应用的时候,以前很多更新的做法是下载一个新版本去覆盖一个旧版...
    揚灵阅读 3,272评论 8 19