1,切換到Android目錄下bin/classes,使用javah命令生成jni所需的標頭檔案,命令類似於:javah com.xxx.ooo,其中,com.xxx為package名稱,ooo為包含native方法的class名稱,不需要.class字尾。
2,在專案的主目錄下生成名為jni 的資料夾,將生成的.h標頭檔案拷貝到該目錄,如果覺得該檔案的名稱過長,可以進行重新命名,例如可以將com.xxx.ooo.h重新命名為test.h。
3,在jni目錄下新建test.c檔案,包含test.h標頭檔案,在其中將.h檔案的方法宣告拷貝到.c中,然後進行程式碼的編寫。
4,在該目錄新建Android.mk檔案,其格式大致如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := test
LOCAL_SRC_FILES := test.c
include $(BUILD_SHARED_LIBRARY)
5,使用ndk-buiild進行編譯,如果不在Application.mk中進行APP_ABI設定,預設會在obj/local/armeabi目錄下生成libtest.so動態庫。
6,修改專案中AndroidManifest.xml檔案,在application標籤下新增android.debuggable="true"屬性,以便可以使用ndk-gdb對生成的動態庫進行除錯。
7,執行Android示例程式,在呼叫jni方法的地方新增斷點,在專案的主目錄執行ndk-gdb,在ndk-gdb新增除錯斷點,當程式執行至jni呼叫位置時,就可以進行ndk-gdb除錯了。
有關JNI中如果進行引數的傳遞和接收,請參看如下文章:
http://www.cnblogs.com/tianshuai11/archive/2012/03/26/2477175.html