1、编写Java代码
首先我们需要编写自己的java代码
public class Hello { static{ System.loadLibrary("hello-jni"); } public native String sayHello();}
2、把写好的类转换成.class文件,在src目录下运行
src>javac com/example/jnitest/Hello.java
会在com/example/jnitest/目录下生成Hello.class文件
3、把.class文件转换成头文件
src>javah com.example.jnitest.Hello
会在src/目录下生成com_example_jnitest_Hello.h文件,如果提示找不到类则添加"-cp ./"
native方法名称转换详解:转换后的native方法全部以Java_为前缀,接着以类的全名标识(包名+类名),以下划线为分隔符(“_”),最后就是方法的名称
4、编写.c文件,包含第三步生成的.h文件,并实现里面的方法
#include "com_example_jnitest_Hello.h"JNIEXPORT jstring JNICALL Java_com_example_jnitest_Hello_sayHello (JNIEnv *env, jobject object){ return (*env)->NewStringUTF(env, "JNITest Native String");}
5、安装NDK,其实就是找个地方解压。
6、编译.h和.c文件
在工程目录下建一个jni目录,将.h和.c文件都放到这目录下,再在jni目录下建一个android.mk文件
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := bigdata-jniLOCAL_SRC_FILES := com_example_fullram_BigDataOccupy.cinclude $(BUILD_SHARED_LIBRARY)
在工程目录下运行
JNITest>E:\android-ndk-r8\ndk-build.cmd
如果没有编译错误,会在libs/armeabi/目录下生成libbigdata-jni.so
7、在工程调用,新建Hello的实例,调用方法。
new Hello().sayHello()