標籤:java native jni android c語言
什麼是JNI那?
JNI是Java Native Interface的縮寫,它提供了若干的API實現了Java和其他語言的通訊(主要是C&C++)。從Java1.1開始,JNI標準成為java平台的一部分,它允許Java代碼和其他語言寫的代碼進行互動。JNI一開始是為了本地已編譯語言,尤其是C和C++而設計的,但是它並不妨礙你使用其他程式設計語言,只要呼叫慣例受支援就可以了。使用java與本地已編譯的代碼互動,通常會喪失平台可移植性。但是,有些情況下這樣做是可以接受的,甚至是必須的。例如,使用一些舊的庫,與硬體、作業系統進行互動,或者為了提高程式的效能。JNI標準至少要保證本地代碼能工作在任何JAVA 虛擬機器環境下。
這是百度百科上面的原話,專家的介紹,大家都懂的。下面有一張關於JNI的知識總結圖,更利於大家對JNI的理解
使用JNI需要先配置NDK 就像配置SDK一樣,至於NDK是怎麼去配置的,因為時間有限,就請大家自行去百度,我這裡就不多說了。
理論上面的知識就到這裡,前人已經替我們總結的非常好了,如何在前人的理論基礎上面去實現它,寫出第一個自己的JNI項目才是本文想去說的。
OK Come On;
建立一個項目 HelloJni ,為layout建立一個點擊事件 onButtonClick
然後在Activity中建立本地方法
然後就該建立我們的C語言方法了。右擊我們的項目app->New->Folder->JNI Folder
這樣就產生了一個專門用來存放JNI檔案的檔案夾
在jni檔案夾中建立一個C語言檔案Hello.c
Hello.c內部代碼
然後在jni檔案夾中建立一個Android.mk檔案,用於進行NDK的編譯
LOCAL_MODULE為編譯之後產生的檔案名稱
LOCAL_SRC_FILES為被編譯的檔案名稱
這裡要注意,預設的情況下JNI是不支援 X86和Mips的CUP架構的,所以我們需要手動的去添加支援。
建立一個Application.mk的檔案,
表示支援所有的CPU架構,其實主要就是X86與Mips架構
然後就需要使用NDK去編譯項目
開啟控制台 cd到該項目的jni檔案夾中,使用ndk-build指令(注意我這裡是mac os,如果是windows 或者 linux 使用的指令為 ndk-build.cmd)
這一步完成之後,會發現項目裡面多了一些東西
最後我們需要在Java代碼之中去引用這個libs
運行代碼點擊按鈕就能簡單的實現了一個 Hello JNI 的Toast
源碼地址:http://download.csdn.net/detail/u011068996/9061135
站在巨人的肩膀上,我們才能看得更遠
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Android-JNI的簡單使用