Windows下NDK開發環境的搭建

來源:互聯網
上載者:User

Windows下NDK開發環境的搭建

 

一:什麼是NDK?

NDK
提供了一系列的工具,協助開發人員快速開發C(或C++)的動態庫,並能自動將so
和java 應用一起打包成apk。這些工具對開發人員的協助是巨大的。

NDK
整合了交叉編譯器,並提供了相應的mk 檔案隔離CPU、平台、ABI
等差異,開發人員只需要簡單修改mk 檔案(指出“哪些檔案需要編譯”、“編譯特性要求”等),就可以建立出so。NDK
可以自動地將so 和Java
應用一起打包,極大地減輕了開發人員的打包工作。比較簡單的說,NDK是一套交叉編譯工具,它可以幫你把你用C或C++書寫的代碼,編譯為.so(類似與win下的.dll)格式的檔案,使你可以在你的Android程式當中用Java語言(JNI)調用這些代碼。

二:下載安裝cygwin

由於NDK編譯代碼時必須要用到make和gcc,所以你必須先搭建一個linux環境,
cygwin是一個在windows平台上啟動並執行unix類比環境,它對於學習unix/linux作業環境,或者從unix到windows的應用程式移植,非常有用。通過它,你就可以在不安裝linux的情況下使用NDK來編譯C、C++代碼了。下面我們一步一步的安裝cygwin吧。

cygwin的:http://cygwin.com/setup.exe點擊cygwin.exe檔案

出現以下介面

點擊下一步

如果您還沒有下載就先選擇第二個把安裝檔案下載下來,或者使用第一個線上安裝,不過很慢。

因為所有的東西都是事先下載好的,所以選擇的第三項。

點擊下一步

找到下載的安裝檔案目錄,點擊下一步

把用紅框標出的兩個改成install狀態,然後點擊下一步下一步

最後直到安裝成功。

在案頭上會有一個捷徑

測試一下cygwin是不是已經安裝好?

運行cygwin,在彈出的命令列視窗輸入:cygcheck -c cygwin命令,會列印出當前cygwin的版本和運行狀態,如果status是ok的話,則cygwin運行正常。

然後依次輸入gcc –v,g++ --version,make –version,gdb
–version進行測試,(注意空格和-)如果都列印出版本資訊和一些描述資訊,非常高興的告訴你,你的cygwin安裝完成了!

三、下載安裝AndroidNDK

Google
出的最新NDK 為

http://developer.android.com/sdk/ndk/index.html

 

四、配置NDK環境變數

1、首先找到cygwin的安裝目錄,找到一個home\<你的使用者名稱>\.bash_profile檔案,我的是:E:\cygwin\home\Administrator\.bash_profile,(注意:我安裝的時候我的home檔案夾下面神馬都沒有,解決的辦法:首先開啟環境變數,把裡面的使用者變數中的HOME變數刪掉,在E:\cygwin\home檔案夾下建立名為Administrator的檔案夾(是使用者名稱),然後把E:\cygwin\etc\skel\.bash_profile拷貝到該檔案夾下)。

2、開啟bash_profile檔案,添加NDK=/cygdrive/<你的盤符>/<android
ndk 目錄> 例如:NDK=/cygdrive/e/android-ndk-r6b

export NDK

NDK這個名字是隨便取的,為了方面以後使用方便,選個簡短的名字,然後儲存

3、開啟cygwin,輸入cd $NDK,如果輸出上面配置的/cygdrive/e/android-ndk-r6b資訊,則表明環境變數設定成功了。

 

五、編譯示範工程

現在就可以編譯相關NDK工程了(一些用c/c++寫的程式),編譯方法如下:

1、在cygwin命令列下,進入android項目工作目錄:

cd $NDK

2、依次進入samples\hello-jni目錄,(完整路徑樣本:E:\Andriod\develop\android-ndk-r4\samples\hello-jni)

3、運行

$NDK/ndk-build

注意:該命令$NDK和/ndk-build是串連到一起的,中間沒有空格,實際使用時是打入完整的$NDK/ndk-build,不要只打ndk-build。

4、正常編譯完成後會在你的項目libs/armeabi目錄下產生對應的 .so檔案。

 

六、匯入靜態目標庫到Android項目

編譯完成後會得到*.so靜態目標庫後,就可以匯入工程環境Eclipse Android項目中使用,注意,NDK編程並非一定要把這個目標庫匯入Android項目使用,除了本步驟描述的使用方法之外,還有Android源碼直接修改、編譯,然後燒錄到測試機的開發方式,那樣可以實現應用程式預設安裝、許可權開機提升等等更“徹底”的功能。綜合一下:

本步驟示範屬於NDK目標庫+AndriodAPK樣式,此外還有Android源碼直接開發、直接編譯方式(確切一點已經淡化Android所謂的工程概念了,當然源碼開發目前似乎還無法直接在Windows下進行,好像必須使用Linux家族系統進行,天緣稍後文章會有所涉及)

使用方法如下(樣本):

1、在Eclipse中建立一個工程HelloJni,HelloJni.java中的代碼可參考NDK對應sample下的示範代碼(android-ndk-r4\samples\hello-jni\tests\src\com\example\HelloJni)調用方法。

2、將NDK編譯項目目錄下的jni和libs檔案夾拷貝到建立工程目錄下

注意這兩個檔案夾要和工程中的src和res檔案在同一目錄下。然後進入Eclipse中重新整理工程(會看到多出兩個檔案夾)。

3、運行Eclipse項目,就可以在虛擬機器上看到hello-jni.c函數中輸出字串。

4、後續您可以試著修改庫來源程式或項目JAVA程式來熟悉NDK整個開發過程。                             

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.