前言
在上节中,我们已经学习了Android增量更新
的实现原理,那么在Android开发的移动端,我们需要涉及到的其实是文件合成
的这个流程。
那么,今天就来讲讲增量更新合成流程的实现吧。
注:第三条中需要添加gradle制作jar文章连接
今天涉及内容:
- Android端代码需要实现的部分
- 制作so文件
2.1 准备工作
2.2 准备工作so
文件制作要点
2.3 新建java文件,建立jni桥梁
2.4 编辑cpp
文件
2.5 编辑CMakeLists.txt
文件
2.6app_module
中配置CMakeLists.txt
文件路径
2.7 运行项目,生成so
库文件 - 制作
jar
文件
一.Android端代码需要实现的部分
我们知道Android增量更新需要两步:
- 生成增量文件
bsdiff old.apk new.apk old-to-new.patch
- 合成新文件
bspatch old.apk new2.apk old-to-new.patch
一般生成增量文件
是在服务端完成,而客户端需要的是用代码实现合成新文件
的流程。
这里涉及到 java
调用c/c++
的问题,所以需要我们新建一个JNI
项目,然后利用跟这个项目生成一套so+jar
的库,最后在你项目中使用这个库文件,实现增量更新的合成过程。
二.制作so
文件
2.1 准备工作
JNI环境的搭建请查看
JNI(一)—NDK环境搭建
JNI生成so
库的过程,查看
JNI(二)—创建JNI项目,生成so文件
需要bsdiff
工具包和bzip2
压缩包。因此我们只需要获得源码来使用即可.
bsdiff 下载地址
bsdiff 依赖bzip2(zip压缩库)
2.2 准备工作so
文件制作要点
新建jni
项目后,解压bsdiff
工具包,将bsptch.c
拷贝到项目的cpp/
文件夹下,如下图:
解压
bzip2
压缩包,在cpp/
文件夹下新建bzip
文件夹,然后将bzip2
压缩包中以下文件拷贝到bzip
文件夹下:2.3 新建java文件,建立jni桥梁
BsPatcher.java
代码如下:
package com.myjni;
/**
* Title:
* description:
* autor:pei
* created on 2020/1/4
*/
public class BsPatcher {
static {
System.loadLibrary("native-lib");
}
public static native void bsPatch(String oldAdk, String patch, String output);
}
2.4 编辑cpp
文件
直接修改native-lib.cpp
文件,如下: