【Android】用 NDK 編譯原生/外部函式

當您下載別人寫的 Android 程式,可能會看到某些 project 目錄下有個 jni 的資料夾,再往裡面看,在這個資料夾內有 .cpp.h ... 等不是 .java 的檔。

這些通常以 C++ 撰寫成函式庫,以加快 appAndroid 系統中的執行效率,要讓這個 project 順利在您的開發環境虛擬機器運行,除了 SDK 外,您還需要 NDK(Native Development Kit, 原生開發工具) 來編譯。

首先下載適合您作業系統的 NDK,將這壓縮檔解開並放置於您指定的位置,例如 D:\android_ndk

以我的情況為例,我的開發平台為 WinXP,故下載 android-ndk-r8e-windows-x86.zip,打開壓縮檔,裡面是一個名為 android-ndk-r8e 資料夾,將這資料夾解開置於 D:\ 下,並將該資料夾名稱 android-ndk-r8e 改為 android_ndk;在這目錄內有一個檔案 -- ndk-build.cmd,我們就是要利用這個檔案來編譯原生函式。

接下來開啟 "命令提示字元"視窗(DOS 視窗),切換到您要編譯的 jni 目錄下,您會發現該目錄下有 android.mkapplication.mk,然後在 DOS 視窗輸入 ndk-build (含絕對路徑) 呼叫 ndk-build,如下:

d:\xxx\jni>d:\android_ndk\ndk-build

它就開始進行編譯了,會花上一些時間。

若順利編譯成功,您就會在這個 project 下多了一個 libs 資料夾,libs 下又有各種不同 CPU 的目錄,這是因為 Android 系統可以採用不同規格 CPU,而在這些目錄內,就是一些編譯完成,副檔名為 .so 的動態函式庫。