Android增量更新(二)—制作合成文件so库

前言

在上节中,我们已经学习了Android增量更新的实现原理,那么在Android开发的移动端,我们需要涉及到的其实是文件合成的这个流程。
那么,今天就来讲讲增量更新合成流程的实现吧。

注:第三条中需要添加gradle制作jar文章连接

今天涉及内容:

  1. Android端代码需要实现的部分
  2. 制作so文件
    2.1 准备工作
    2.2 准备工作so文件制作要点
    2.3 新建java文件,建立jni桥梁
    2.4 编辑cpp文件
    2.5 编辑CMakeLists.txt文件
    2.6 app_module中配置CMakeLists.txt文件路径
    2.7 运行项目,生成so库文件
  3. 制作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/文件夹下,如下图:

Android增量更新(二)—制作合成文件so库_第1张图片
image.png

解压 bzip2压缩包,在 cpp/文件夹下新建 bzip文件夹,然后将 bzip2压缩包中以下文件拷贝到 bzip文件夹下:
Android增量更新(二)—制作合成文件so库_第2张图片
image.png

2.3 新建java文件,建立jni桥梁

Android增量更新(二)—制作合成文件so库_第3张图片
image.png

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文件,如下:

你可能感兴趣的:(Android增量更新(二)—制作合成文件so库)