前提:命令行 -javac 和-javah好使,就是你已經配置了java的環境變量。
java裏聲明方法 比如你的com.test.jni目錄下Main類裏聲明瞭
方法
class Main{
public native String getString (String string);
}
方法,然後c/c++裏怎麼實現它呢;
如圖
你程序編譯後 通過命令行到達程序的 bin目錄下
運行
-javah -d jni -classpath classes come.test.jni.Main (這是你java裏聲明的方法)
然後 你的jni目錄下會多了個com_test_jni_Main.h 一個c的頭文件
內容如下
#include <jni.h>
/* Header for class com_test_jni_Main */
#ifndef _Included_com_test_jni_Main
#define _Included_com_test_jni_Main
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_test_jni_Main
* Method: getString
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_test_jni_Main_getString
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif
然後你就可以通過 c/c++知識實現裏面的方法了(上面的紅字方法)
至於怎麼生成動態庫(真正連接Android和c/c++)我博客裏有。
(JNI最難的是傳遞的參數的轉換,這裏有詳細介紹和實例http://helloxuweifu.iteye.com/blog/1168647)