首先,大神勿喷。有错的地方,请多多指教。
一.简介:
JNI(java native interface) java本地接口。用于java与操作系统本地代码互调的功能接口。
二.环境安装:
1.安装JDK,并配置环境变量
2.安装NDK,并配置环境变量
3.安装eclipse。
三.所需知识
熟悉Java、C/C++。
四.在eclipse中实现步骤
1.创建一个android projection工程。
2.写一个Native.java和MAinActivity.java。
3.进入win命令窗口,切换到你的工作空间目录。输入 javah –classpath bin\classes [ –d jni ] [ -jni ] 包名.类名
Javah -----用于生成.h头文件
-classpath -----用于指定类的路径
-d -----用于指定输出的目录
配置好了JDK环境后,可自行输入javah查询用法。
例:javah -classpath -bin\classes -d jni com.example.testjni.Native.java
4. 创建一个C/C++类,将生成的.h文件中的原型函数复制到C/C++类中。写自己的方法实现。
例:原型函数JNIEXPORT jstring JNICALL Java_com_example_hellojni_MainActivity_getString
(JNIEnv *, jobject, jstring);
1)其中JNIEXPORT与 JNICALL这两个宏(被定义在jni.h);确保它在本地库对外可见,并且c/c++编译器能正常调用。
2)JNIEnv接口指针,指向一个个函数表。函数表中的每一个入口指向一个JNI函数。
3)第二个参数根据本地方法是静态方法还是实例方法。若为静态方法时,代表为本地方法的所在类;若为实例方法时,代表本地方法对应类的对象。
5.写一个Android.mk文件
例:
LOCAL_PATH:=$(call my-dir)
include$(CLEAR_VARS)
LOCAL_MODULE:=NativeJni
LOCAL_SRC_FILES:=C类名.c C++类名.cpp
include$(BUILD_SHARED_LIBRARY)
6.进入命令窗口:输入ndk-build会自动生成相应的lib***.so文件。
在eclipse中 默认生成在obj\local\armeabi\lib***.so
到这里,基本就完成啦。最后就是你自己怎么去调用你自己写的native 方法。