1. 下载NDK
地址:http://developer.android.com/tools/sdk/ndk/index.html
解压-》配置环境变量(此处不多说明) 在shell中输入ndk-build -version 验证是否安装成功。
2. 在eclipse中建立Android工程,并声明JNI函数
如下所示:(完成对jni函数的声明)
public class JNITWO { static{ System.loadLibrary("JNI"); } public native int cal(int a); }
接着编译,如果成功,你会在工程目录下的/bin/classes目录下找到对应的class文件
3. 生成JNI头文件
在工程根目录下建立jni目录,然后在shell中定位到jni目录下,并输入
javah -classpath ../bin/classes com.example.testjni.JNITWO
此过程成功后,会生成com_example_testjni_JNITWO.h头文件
4. 定义(实现)JNI函数,以及Android.mk文件
根据3中生成的头文件,编写c/c++文件
然后书写Android.mk文件 (范例如下)
LOCAL_PATH := $(call my-dir) LOCAL_CPP_EXTENSION := .cpp include $(CLEAR_VARS) LOCAL_MODULE := JNI LOCAL_SRC_FILES := JNITWO.c include $(BUILD_SHARED_LIBRARY)
其中第二行为c++文件所必须的扩展语句(如果只有c语言可以不用这句话)LOCAL_MODULE 表示要生成so文件的模块,比如此处会生成libJNI.so文件
LOCAL_SRC_FILES 表示要编译的源文件 (如果有多个文件可以用空格分开)
其他的可以不用修改
5. 编译生成so文件
在shell中定位到jni目录下,运行ndk-build,如果成功则会生成 so文件
备注:也可以在eclipse中配置自动利用NDK来编译,但是个人觉得不能太依赖IDE,而且自己手动编译也可以对整个过程有个更清晰的了解。