1、概述html
在Android中调用动态库文件(*.so)都是经过jni的方式,并且每每在apk或jar包中调用so文件时,都要将对应so文件打包进apk或jar包,.h是头文件,里面通常都是一些函数定义类型定义,不会有运行的代码,cpp是源文件,是用来运行的,在cpp中加上#inlcude<>导入.h文件。
.h文件就像是一个接口,具体的实现能够在.cpp中也能够在.h中。android
工程目录下图:c++
以上方式的存在的问题:git
一、缺乏灵活性比较相似静态加载了(不是静态加载),能加载的so文件绑定死了;github
二、但so文件不少或很大时,会致使对应的apk和jar包很大;函数
三、不能动态的对so文件更新;gradle
解决办法:http://www.cnblogs.com/sevenyuan/p/4202834.html ui
2、JNI_Android项目中调用.so动态库实现详解.net
http://www.cnblogs.com/sevenyuan/p/4202759.htmlhtm
3、jni教程
http://blog.csdn.net/jiuyueguang/article/details/9447245
4、demo
https://github.com/dennishucd/FFmpeg4Android/tree/master/FFmpeg4Android (经典!)
5、 一个注意:android jni 引用第三方 so
http://blog.csdn.net/hanwest/article/details/30044855
6、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