0:前言:
- 在第二篇中,我们主要介绍了丙方android公司利用乙方C++公司给的动态库,直接调用库中的方法,但是这样方式受限于:
- 乙方C++公司开发的动态库是否符合jni的规范,如果不规范,则不能直接调用
- 如果丙方android公司哪一天老板脑瓜抽筋说:“擦,咱们利用乙方C++公司给的库基础上再包装一下,再添加我们公司业务的新功能,打包成库,我们也卖!!!!”这种情况下不能直接调用乙方给的库了
- 有的库只是实现了基本的业务逻辑,更加复杂的需要调用库中的函数来实现
- 在本篇中,我们整合第三方库到我们自己的库中,详情请看下面
[第一篇:android调用第三方库——编写库libhello.so]
[第二篇:android调用第三方库——编写库android程序直接调用第三方库libhello.so]
[第三篇:android调用第三方库——编写库android程序整合第三方库libhello.so到自己的库libhelloword.so]
1:搞起:
- 同样也是从新建helloword的android程序开始,和第一篇中步骤一样,这里不再多说了,主要是内容不一样,我会贴出代码和解释
- 在jni文件夹中新建文件夹hello,在hello中新建include,hello放libhello.so,include中放头文件com_hello_hello_HelloActivity.h
- 结构如图
- src目录下有两个包,分别是
- com.hello.hello包中HelloActiviry.java中的代码
- com.hello.word包中HellowordActiviry.java中的代码,这个Activity是我们的android主程序
- 同样经过javah命令(不明白的地方请去看第一篇)生成头文件
- 自己的头文件com_hello_word_HellowordActivity.h代码,明显是自己的两个接口,
- helloword.cpp代码,这个文件主要用来实现上述头文件中的接口函数,
-
- 注意引入头文件
- 在我们自己的库函数中调用第三方库,可扩展性增大
- Adnroid.mk代码,这个代码需要注意
-
- 运行测试android程序直接调用第三方库方式
- 运行测试android直接调用自己库方式
- 运行测试android直接调用自己库方式,但是我们的库调用了第三方库,在我们的库中对第三方库进行了包装,实现了我们自己的逻辑
2:下载demo[猛戳这里下载demo]