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-jni
LOCAL_SRC_FILES := com_example_fullram_BigDataOccupy.c
include $(BUILD_SHARED_LIBRARY)
在工程目錄下運行
JNITest>E:\android-ndk-r8\ndk-build.cmd
如果沒有編譯錯誤,會在libs/armeabi/目錄下生成libbigdata-jni.so
7、在工程調用,新建Hello的實例,調用方法。
new Hello().sayHello()