JNI (Java Native Interface) 廣泛的應用在Android開發上,JNI基本上就是搭建Java與C++的橋梁。本篇文章實作JNI的簡單範例。
開發環境
Windows 7
Eclipse
JDK
VC Express 2010
第一步,建立一個新的類別檔
開啟Eclipse,新增一個Java專案(MyJniTest)。內容如下圖,我設定了一個native function叫print()。print的實作我會放在C++中。主程式main會去呼叫print()。底下有個loadLubrary("XXX")是等等我們要把C++的程式build成.dll(或.so)要餵給Java用的,其中"XXX"是dll(或.so)的名稱。
最後稍微run一下,不會成功但是少bin資料夾下會產生.class檔
第二步,建立hader
開啟cmd,執行javah的指令,就會產生剛剛.class檔對應的JNI hader檔。
例如: javah -jni tw.beitou.walker.MyJniTest
其中,MyJniTest是類別名稱,而tw.beitou.walker是包名(package name),如果剛剛在Eclipse專案新增類別有填入包名就一定要輸入。
產生Jni的hader檔(.h),等等就要用這來實作C++部分。
第三部,實作native function
開啟VC,開一個新專案,注意輸出不要.exe,要改成.dll喔。
開一個.cpp檔,載入剛剛的tw_beitou_walker_MyJniTest.h,在.cpp檔實作函式
JNIEXPORT void JNICALL Java_tw_innojoy_slot_MyJniTest_print
(JNIEnv *, jobject);
我簡單的讓他印 Hello World 5678 ,等等看執行Java時會不會出現嚕。
build 一下,產生.dll檔。
Step4. 執行
將.dll放入Java專案中,再run這個Java專案。就可以看到執行結果如下:
透過Jni,無論開發Java或是Android無限的可能又更大嚕!
加油加油!
留言列表