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