做者:十岁的小男孩java
QQ:929994365android
心之安处便是吾乡c++
前言ide
本文试图经过解答如下三个问题来达到学习JNI和NDK的目的。是什么?有什么用?怎么用?文章内容前三节来自下面第一个连接的博主共享,很详细的解答前两个问题,第二个连接是安卓官网的教程,回到了第三个问题即在实际工程中怎么用。第三个连接是极客学院的资料。本文记录本人阅读与开发过程,力求不失原意,但推荐阅读原文。下一篇博文将重点学习native声明的方法在底层c/c++中具体实现。工具
http://www.javashuo.com/article/p-slffgxgu-gc.html学习
https://developer.android.google.cn/studio/projects/add-native-codeui
http://wiki.jikexueyuan.com/project/jni-ndk-developer-guide/google
目录spa
Java Native Interface
,即 Java
本地接口做用: 使得Java
与 本地其余类型语言(如C、C++
)交互.net
即在
Java
代码 里调用C、C++
等语言的代码 或C、C++
代码调用Java
代码
特别注意:
JNI
是 Java
调用 Native
语言的一种特性JNI
是属于 Java
的,与 Android
无直接关系Java
须要与 本地代码 进行交互Java
具有跨平台的特色,因此Java
与 本地代码交互的能力很是弱JNI
特性 加强 Java
与 本地代码交互的能力Java
中声明Native
方法(即须要调用的本地方法)Java
源文件javac(获得 .class
文件)javah
命令导出JNI
的头文件(.h
文件)Java
须要交互的本地代码 实如今 Java
中声明的Native
方法 如
Java
须要与C++
交互,那么就用C++
实现Java
的Native
方法
.so
库文件Java
命令执行 Java
程序,最终实现Java
调用本地代码Native Development Kit
,是 Android
的一个工具开发包 NDK是属于
Android
的,与Java
并没有直接关系
C
、 C++
的动态库,并自动将so
和应用一块儿打包成 APK
NDK
在 Android
中 使用 JNI
与本地代码(如C、C++)交互应用场景:在Android的场景下 使用JNI
即
Android
开发的功能须要本地代码(C/C++)实现
特色
Android NDK
环境Android
项目,并与 NDK
进行关联Android
项目中声明所须要调用的 Native
方法Android
须要交互的本地代码 实如今Android
中声明的Native
方法 好比
Android
须要与C++
交互,那么就用C++
实现Java
的Native
方法
ndk - bulid
命令编译产生.so
库文件Android Studio
工程,从而实现 Android
调用本地代码本节内容的学习是经过阅读安卓官网的教程,本文暂且不赘述,读者自行到官网学习,如下连接:https://developer.android.google.cn/studio/projects/add-native-code