标签:
同学们,笔者作为一名资深老司机,向大家郑重承诺:“文章的最后会有福利发放,请自备纸巾!!!”
以下是整个 “JNI开发”的主题大纲,由于篇幅的限制,本文就简单的介绍一下关于JNI开发的一些准备工作:概念、环境与必要知识。
来自 维基百科!!!
JNI允许用本地代码来解决纯粹用Java编程不能解决的平台相关的特性。也用于改造已存在的其它语言写的应用程序,供Java程序访问。许多使用了JNI的标准库提供了文件I/O与其它功能。标准库中性能敏感或平台敏感的API实现允许所有Java应用程序安全且平台独立地访问这些功能。
JNI框架使得本地方法可以访问Java对象,就如同Java程序访问这些本地对象。本地方法可以创建Java对象,然后检查、使用这些对象执行任务。本地方法也可以检查并使用由Java程序创建的对象。
Java开发人员称JNI为逃生门(”escape hatch”),因为JINI允许增加标准Java API不能提供的功能。也可以用于时间关键的计算或者如解复杂数学方程,因为本地方法的运算比JVM更快。[2] 也可以在安卓上重用已存在的C/C++编写的库。
1. 安装NDK:① file—>setting / 或如图 “标志①”; ②选择 “Android SDK”;③ 点开 “SDK Tools” ; ④勾选“NDK”等待安装,NDK的默认安装目录“~xx\sdk\ndk-bundle
”。
2. 为项目配置NDK环境: 套路一致,请看图中:①②③④
Plugin Version
与Gradle Version
所对应关系Plugin Version | Gradle Version |
---|---|
0.1.0 | 2.5 |
0.2.0 | 2.5 |
0.3.0-alpha3 | 2.6 |
0.4.0 | 2.8 |
0.6.0-alpha1 | 2.8 |
0.6.0-alpha5 | 2.10 |
0.7.0-alpha1 | 2.10 |
gradle-experimental相关的博客
gradle-experimental原网站
Android Studio NDk调试(基于gradle-experimental插件与LLDB)
到这边我们开发环境与调试环境就已经搭建好了…接下来我们去了解一下我们开发过程中需要的知识吧~~~
javac 命令:将.java源文件编译成.class字节码文件
javac src/com/wenld/jnidemo/HelloWorld.java -d ./bin
-d 表示将编译后的 class 文件放到指定的目录下
javah -jni 命令:根据class字节码文件生成.h头文件
javah -jni -classpath ./bin -d ./jni com.wenld.jnidemo.HelloWorld
默认生成的.h
头文件名为:com_study_jnilearn_HelloWorld.h(包名+类名.h),也可以通过-o
参数指定生成头文件名称:
javah -jni -classpath ./bin -o HelloWorld.h com.wenld.jnidemo.HelloWorld
classpath
:类搜索路径,这里表示从当前的 bin 目录下查找 d
:将生成的头文件放到当前的 jni 目录下 o
:指定生成的头文件名称,默认以类全路径名生成(包名+类名.h)Java类型 | 本地类型 | 说明 |
---|---|---|
boolean | jboolean | 无符号,8位 |
byte | jbyte | 无符号,8位 |
char | jchar | 无符号,16位 |
short | jshort | 有符号,16位 |
int | jint | 有符号,32位 |
long | jlong | 有符号,64位 |
float | jfloat | 32位 |
double | jdouble | 64位 |
void | void | N/A |
…
太多了 请参考:http://yanbober.github.io/2015/02/16/android_studio_jni_2/
开启调试 如图:① ②
三位帅哥跑马拉松的英姿,猜猜哪个是我?
参考:
标签:
原文地址:http://blog.csdn.net/sinat_15877283/article/details/51211546