一、概述
在Android中调用动态库文件(*.so)都是通过jni的方式,而且往往在apk或jar包中调用so文件时,都要将对应so文件打包进apk或jar包,.h是头文件,里面一般都是一些函数定义类型定义,不会有运行的代码,cpp是源文件,是用来运行的,在cpp中加上#inlcude<>导入.h文件。
.h文件就像是一个接口,具体的实现可以在.cpp中也可以在.h中。
工程目录下图:
以上方式的存在的问题:
1、缺少灵活性比较类似静态加载了(不是静态加载),能加载的so文件绑定死了;
2、但so文件很多或很大时,会导致对应的apk和jar包很大;
3、不能动态的对so文件更新;
解决办法:http://www.cnblogs.com/sevenyuan/p/4202834.html
http://www.cnblogs.com/sevenyuan/p/4202759.html
三、jni教程
http://blog.csdn.net/jiuyueguang/article/details/9447245
四、demo
https://github.com/dennishucd/FFmpeg4Android/tree/master/FFmpeg4Android (经典!)
五、 一个注意:android jni 引用第三方 so
http://blog.csdn.net/hanwest/article/details/30044855
六、androidStudio jni
http://www.jianshu.com/p/b667baf10306 好!
当遇到your project contains c++ files but it is not using a supported native build system异常时,
Add android.useDeprecatedNdk=true in your gradle.properties
来源:oschina
链接:https://my.oschina.net/u/1389206/blog/748647