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查看
android cpp做成so库,Android增量更新(二)—制作合成文件so库相关推荐
- 群晖Nas通过jellyfin搭建本地影音库详细全过程(二):jellyfin影音库信息手动刮削和相关设置(100%扫库成功)
前言,上期讲了如何安装jellyfin,根据我个人使用感受,我很开心的将收藏的电影复制到媒体库中,在jellyfin中新建了媒体库,然后发现自动刮削就是shit,还有一大半电影直接不显示,很多人可能会 ...
- 国二试题库c语言,国二c语言笔试试题库(试题).doc
PAGE 49 第一章 C语言概述 一 单项选择题 1.一个C程序的执行是从( ). A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结 ...
- 采用 bsdiff 开源库 Android 的增量更新,差分更新 服务器端客户端
Incremental-update-master 项目地址: ccj659/Incremental-update-master 简介:采用 bsdiff 开源库 Android 的增量更新,差分更新 ...
- python增量更新数据_Python标准库——加密
增量更新 散列计算器的update()方法可以反复调用.每次调用时,都会根据提供的附加文本更新摘要.增量更新比将整个文件读入内存更高效,而且能生成相同的效果. 新建hashlib_update.py文 ...
- java实现增量更新_Android 增量更新的完整实现步骤
本文的代码在:https://github.com/czl0325/android_app_update 1.下载bsdiff库 首先增量更新用到了开源的bsdiff库,先到官网下载,地址是http: ...
- 创建制作SDK的静态库工程
因为公司需要持续性向别人提供一套蓝牙锁SDK,按照传统的方式打包静态库真是太痛苦,SDK依赖的一些私有库会有频繁的更新,依赖的第三方库也是错综复杂.我迫切需要找到一种更方便的打包静态库的方式,既能随时 ...
- Mongodb数据库转换为表格文件的库
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 却嫌脂粉污颜色,淡扫蛾眉朝至尊. ...
- Android增量更新 bsdiff bspatch库加入到Android工程
最近项目中要使用增量更新去下载更新我们app内部的H5离线资源包,现把遇到的问题总结一下 用到的库 都要科学上网 bsdiff 第一次进入官网感觉很懵逼,没找到download的字眼,不要急,慢慢往下 ...
- Android Apk增量更新
前言 有关APK更新的技术比较多,例如:增量更新.插件式开发.热修复.RN.静默安装. 下面简单介绍一下: 什么是增量更新? 增量更新就是原有app的基础上只更新发生变化的地方,其余保持原样. 与 ...
最新文章
- iphone开发UITable内嵌不同风格Table
- web中的cookies以及作用--web testing 学习笔记
- Nature Cancer | 发现非肿瘤药物的抗癌潜力
- 章鱼有9个大脑能编辑基因,智商高到无法理解,为何没发展出文明
- python fileinput模块next_Python中的fileinput模块的简单实用示例
- Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)
- Boost:求容器的最小元素和最大元素
- [html] canvas透明度是0.6的矩形和透明度是0.2的矩形叠加到一起,透明度是多少
- pandas中DataFrame的学习笔记~
- 2021爱分析·中国房企数字化实践报告
- 微信小程序|基于小程序实现人脸识别对比
- 一篇论文8778个作者:人均写5个字,署名用了17页
- ubuntu分区大小
- 联通沃云发布全新战略:强大基座,就在身边
- Java之IK 分词器
- 团队执行力(企业管理培训)
- 无偏估计、有效性、相合性
- 内存地址[bx+idata]、[bx+si/di]、[bx+si/di+idata]的灵活定位
- 基于electron的音视频播放器
- 计算机在工商管理中的应用,计算机在企业管理中的应用.doc