NDK 開發環境搭建

JAVA開發中,我們經常要用到JNI機制,去調用一些已經實現了的庫,以便代碼複用,不必重新實現。

NDK(Native Development Kit)。Android 常見開發方式是Java 封裝的庫,而這些庫的底層是由C 或 C++ 實現的。NDK 是Google 公司推出的幫助Android 開發者通過C/C++ 本地語言編寫應用的開發包,其包含C / C++ 頭文件,庫文件,示例代碼。目前NDK提供的庫函數功能有限,僅僅用於處理那些算法敏感的問題,比如圖像處理,大數據量計算等。當然,一些底層本身已經用本地代碼實現,我們也可以採用NDK技術運用到Android 開發中來。

網上有很多討論NDK 和 JNI 的區別的文檔,大家可以去看看。但是我認爲二者最大的區別在於 NDK 相較 JNI 多了一個 將 .so 文件打包到APK的工具。而JNI 並沒有提供打包功能,其只是將 .so 文件放到文件特定位置。而且NDK開發環境提供交叉編譯的功能,爲確保我們開發的應用能夠正確安裝在手機上,必須採用對應ARM架構來編譯,因此,在PC端開發必須採用交叉編譯工具。NDK 集成了交叉編譯器,並提供了相應的mk 文件隔離CPU、平臺、ABI 等差異,開發人員只需要簡單修改mk 文件(指出“哪些文件需要編譯”、“編譯特性要求”等),就可以創建出so。NDK 可以自動地將so 和Java 應用一起打包,極大地減輕了開發人員的打包工作。比較簡單的說,NDK是一套交叉編譯工具,它可以幫你把你用C或C++書寫的代碼,編譯爲.so(類似與win下的.dll)格式的文件,使你可以在你的Android程序當中用Java語言(JNI)調用這些代碼。

工慾善其事必先利其器,下面介紹下 NDK Cygwin CDT 集成開發環境的搭建。

一、Cygwin 安裝

1、官網下載Cygwin,安裝。

注意: 安裝過程中選擇鏡像站點。選擇要下載的站點,我用的是http://mirrors.kernel.org/,速度感覺還挺快,選擇後點下一步。

選擇要下載的包的名稱。爲了避免全部下載,這裏列出了後面開發NDK用得着的包:autoconf2.1automake1.10binutilsgcc-coregcc-g++gcc4-coregcc4-g++gdbpcrepcre-develgawkmake共12個包。

2、安裝好後。運行cygwin,在彈出的命令行窗口輸入:cygcheck -c cygwin命令,會打印出當前cygwin的版本和運行狀態,如果status是ok的話,則cygwin運行正常。 然後依次輸入gcc –versiong++ --versionmake –versiongdb –version進行測試,如果都打印出版本信息和一些描述信息,非常高興的告訴你,你的cygwin安裝完成了!

二、配置NDK環境變量

下載 android-ndk-r8b-windows.zip 解壓放到 e 盤根目錄下,具體配置過程如下:

1、首先找到cygwin的安裝目錄,找到一個home\<你的用戶名>\.bash_profile文件,我的是:E:\cygwin\home\Administrator\.bash_profile。

有時候會碰到home文件夾下沒有子文件的情況。這時,直接 cp /cygwin/etc/skel/.bashrc  ~ 即可。查看下 ~ 對應目錄。

2、打開bash_profile文件,添加NDK=/cygdrive/<你的盤符>/<android ndk 目錄> 例如:

         NDK=/cygdrive/e/android-ndk-r8

         export NDK

(NDK 這個名字是隨便取的,爲了方面以後使用方便,選個簡短的名字,然後保存)

3、打開cygwin,輸入cd $NDK,如果輸出上面配置的/cygdrive/e/android-ndk-r8信息,則表明環境變量設置成功了。

三、用NDK來編譯應用程序

1、  現在我們用安裝好的NDK來編譯一個簡單的程序吧,我們選擇ndk自帶的例子hello-jni,我的位於E:\android-ndk-r8\samples\hello-jni(根據你具體的安裝位置而定),

2、 運行cygwin,輸入命令cd /cygdrive/e/android-ndk-r8/samples/hello-jni,進入到E:\android-ndk-r8\samples\hello-jni目錄。

3、 輸入$NDK/ndk-build,執行成功後,它會自動生成一個libs目錄,把編譯生成的.so文件放在裏面。($NDK是調用我們之前配置好的環境變量,ndk-build是調用ndk的編譯程序)

4、  此時去hello-jni的libs目錄下看有沒有生成的.so文件,如果有,你的ndk就運行正常啦!

生成之後,這時候可以再用ndk的samples裏邊的例子生成eclipse工程了.

四、Eclipse 安裝CDT 插件

去Eclipse 官網查看CDT 插件,發現其提供兩種安裝方式。

1、直接下載安裝包

2、在線安裝

我們選擇在線安裝方式,在Eclipse ——》Help ——》 Install  選項中,添加地址http://download.eclipse.org/tools/cdt/releases/juno ,安裝完畢,OK!

五、配置Eclipse 中工程可直接編譯C/C++代碼成庫文件並構建整個android 工程

這個需要在Properties ——》 Builders 中進行設置,這樣每一個工程都得設置,個人感覺過程還是比較麻煩,還不如就直接開發好C代碼,編譯成SO庫文件後,然後再倒入JAVA工程中。大家有興趣的話,去網上GOOGLE下,照着做就OK了,這裏不再贅述。

 參考方法地址:http://www.cnblogs.com/luxiaofeng54/archive/2012/03/13/2136982.html

發佈了24 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章