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

###前言

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

那么,今天就来讲讲增量更新合成流程的实现吧。

今天涉及内容:

1. Android端代码需要实现的部分

2. 制作so文件

2.1 准备工作

2.2 准备工作`so`文件制作要点

2.3 制作流程

3. 生成`so`文件和`jar`包

4. MainActivity中使用代码

5. 项目结构图

####一.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环境搭建](https://www.jianshu.com/p/fa95d74a017d)

JNI生成`so`库的过程,查看

[JNI(二)—创建JNI项目,生成so文件](https://www.jianshu.com/p/9f3b321bfa89)

需要`bsdiff`工具包和`bzip2`压缩包。因此我们只需要获得源码来使用即可.

[bsdiff 下载地址](http://www.daemonology.net/bsdiff/)

[bsdiff 依赖bzip2(zip压缩库)](https://sourceforge.net/projects/bzip2/)

#####2.2 准备工作`so`文件制作要点

新建`jni`项目后,解压`bsdiff`工具包,将`bsptch.c`拷贝到项目的`cpp/`文件夹下,如下图:

![](/contentImages/image/20200107/lE1MrqZmJN5nORv730h.png)

解压`bzip2`压缩包,在`cpp/`文件夹下新建`bzip`文件夹,然后将`bzip2`压缩包中以下文件拷贝到`bzip`文件夹下:

![](/contentImages/image/20200107/jGLRXwyGm8uC1FZP3f9.png)

#####2.3 制作流程

1. 新建java文件,建立jni桥梁

2. 编辑`cpp`文件

3. 编辑`CMakeLists.txt`文件

4. `app_module`中配置`CMakeLists.txt`文件路径

5. 运行项目,生成`so`库文件

6. 制作`jar`文件

####三.生成`so`文件和`jar`包

生成后的`so`截图如下:

![](/contentImages/image/20200107/2N11Wf6bWu8rUfiglYh.png)

`jar`包截图

![](/contentImages/image/20200107/bGKojszIgKIMAGDlzbl.png)

####四。MainActivity中使用代码

Mainactivity中使用参考重要代码如下:

```

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// Example of a call to a native method

TextView tv = findViewById(R.id.sample_text);

tv.setText("哈德罗克经济");

// //此为参考代码

// BsPatcher.bsPatch("old.apk","new.patch","new.apk");

}

}

```

####五.项目结构图

![](/contentImages/image/20200107/cysOGXBU2lq9KCcVO2Y.png)

ok,今天的内容就讲到这里了。详情下载demo查看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值