一、編寫Java代碼java
首先咱們須要編寫本身的java代碼android
public class Hello { static{ System.loadLibrary("hello-jni"); } public native String sayHello(); }
二、把寫好的類轉換成.class文件,在src目錄下運行ui
src>javac com/example/jnitest/Hello.javacode
會在com/example/jnitest/目錄下生成Hello.class文件cmd
三、把.class文件轉換成頭文件string
src>javah com.example.jnitest.Helloit
會在src/目錄下生成com_example_jnitest_Hello.h文件,若是提示找不到類則添加"-cp ./"編譯
native方法名稱轉換詳解:轉換後的native方法所有以Java_爲前綴,接着以類的全名標識(包名+類名),如下劃線爲分隔符(「_」),最後就是方法的名稱class
四、編寫.c文件,包含第三步生成的.h文件,並實現裏面的方法test
#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"); }
五、安裝NDK,其實就是找個地方解壓。
六、編譯.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
七、在工程調用,新建Hello的實例,調用方法。
new Hello().sayHello()