在一起學Android的時候老師沒講JN,甚至連ndk都沒有講。只是提了一下,老師說,一百個做Android的裏面只會有一個用到JNI,這個用jni的同學也是在項目的個別功能中用到了一點點,所以就沒給我們講。沒想到我前幾天在項目中用到了,於是就整理一下。第一次寫博客,好緊張,作爲一個程序員,作文一向不及格的程序員,寫出來大家不要見笑。
這次博客我會分幾篇來寫,同時我會附帶上我的代碼。
首先呢,我們要了解一下c對c一點都不瞭解的同學,自己去找個視頻、書什麼的看一下就好了。不需要懂太多,瞭解一下就可以了。這裏給大家介紹一個c開發的工具,如果需要可以下載下來用。WY_DEVCPP_5B1107.zip
閒話不多說,我們直接來乾貨。
安卓開發應用層的代碼是用java寫的,而底層的代碼使用c/c++寫的,有很多時候我們在應用層實現不了的功能都需要在用c來寫。或者直接調用人家寫好的.so文件。那就要用到我們說的jni。我這裏就先介紹一下直接用c寫,然後再給大家介紹怎麼用.so文件。
android中java和c互調分爲以下幾步:
1, 安裝配置ndk,這個比較簡單,我覺得比配置jdk還要簡單。
project->prefenences->Android->ndk->Browse->選擇自己的ndk目錄->Apply->ok
創建一個JNI項目的步驟
1,創建一個Android工程
2,在java代碼中聲明一個native方法
3,在java代碼中調用該方法
4,在Android工程的根目錄下建一個文件夾jni,編寫c代碼文件名要對應
5,編寫Android.mk文件,(複製出來,然後修改就可以了)
6,java代碼load動態庫,調用native方法
7,NDK編譯生成動態鏈接庫編譯命令,ndk-build
步驟寫的都很清晰,而且我還附帶了代碼,這裏就不多的囉嗦了。第7步,我在簡單的提一下。
在項目的根目錄,按住shift鍵,反鍵,選擇“在此處打開命令窗口(w)”,打開命令窗口(黑窗口),然後輸入ndk-build
然後如果出現.so那就是可以了。
看完博客還是不太明白,不要緊,可以下載源碼看看。