Android NDK配、編譯、調試

Android NDK編程開發

肯定下載對應的adt-bundleNDK,主要兩個軟件的操做系統版本。軟件的版本配置是決定成功的重要因素。android

環境說明

OSWindows 7 x64shell

Adt-bundle-windows-x86-x64Eclipse 4.2.0編程

Adtwindows

NDKAndroid-ndk-windows-x86-x64(版本爲9,通過測試NDK 10配置失敗)網絡

參考使用軟件下載地址,目前只提供ndk插件eclipse

http://pan.baidu.com/s/1nukTkedide

版本與更新

查看版本

首先拿到版本之後不要急着開發,首先肯定本身對應的軟件版本。各個軟件之間的版本將會直接影響到最終可否調試成功。函數

Eclipse版本查看測試

打開文件查看版本adt-bundle-windows-x86_64-20140702\eclipse\.eclipseproductui

Adt版本查看:

    Android SDK Manger中查看

NDK版本查看:

 網上下載,版本提早知道,具體經過軟件查看未知。

版本更新

更新Eclipse

由於版本問題可能致使一些沒法預測的問題,若是你有信心解決這些意外,能夠跳過版本更新匹配。

首先選擇版本更新,首先更新Eclipse版本

Eclipse->Help->Install New Software

 

更新ADT

打開Android SDK Manager,首先設置網絡代理,由於下載地址被屏蔽只能經過代理下載數據。

Android SDK Manager->Tools->Option

 

而後刷新開始下載。建議不要更新最新版本,根據自身的NDK的版本下載,我選擇了API19API21兩個版本的全部文件下載,不要使用過多版本,這樣控制容易出現問題更具須要配置。

首先全選全部的版本,執行刪除操做。

 

而後在勾選對應的版本進行更新下載。

 

這裏涉及到:

Tools

Android SDK Tools

Android SDK Platform-tools

Android SDK Build-tools

Android <version>(API<version>)

SDK Platform

Sample for SDK

<Version> System Image:注意CPU/ABI版本和操做系統的位數

Google APIS

Sources for Android SDK

Extras

環境配置

配置SDK路徑

配置NDK路徑

完成之後打開Eclipse->Preference->Android看看是否有NDK選擇,若是沒有就下載一個NDK Plugin插件。com.android.ide.eclipse.ndk_23.0.7.2120684.jar

而後將Eclipse->Preference->Android->NDK路徑指向對應路徑

這樣就完成基礎的環境配置。

NDK開發

新建Android程序

由於涉及NDK開發,不建議導入和使用NDK自帶的例子由於問題太多了。在新建過程當中最好minSDKVersiontargetSDKVersion,保持一致要不在後續開發中會出現沒必要要的問題。

首先新建一個Android程序。設置以下:

 

其餘的採用默認。

 

Activty Name根據需求自行決定是否更改,我這邊修改成HelloWorld

新建完成之後的界面

 

配置NDK編譯

Add Native Support

新建完成Android程序之後,在工程樹右鍵Android Tools->Add Native Support

 

完成操做之後工程樹發生變化,執行一次編譯工程,將會多出Includelibsjni三個文件夾。

 

Include:主要存儲C/C++以及NDK使用的頭文件路徑

Libs:主要存儲生成的so文件,區分不一樣的CPU/API

Jni:用於存儲C/C++代碼以及相關的mk文件

配置編譯C++代碼

打開工程數據屬性Property->C++ Build

建議將NDK路徑添加到PATH環境變量中,這樣能夠簡化設置,減小部分意外事件的發生。

NDK路徑添加到PATH的配置方法

首先配置系統環境路徑

添加NDKROOT

 

PATH中追加

 

而後配置ndk-build編譯

 

未設置NDK路徑到PATH的配置方法

首先配置環境變量

 

而後配置ndk-build

 

NDK_DEBUG=1:必選,編譯爲可調式版本的二進制文件,默認爲NDK_DEBUG=0

V=1:可選,執行ndk-build且打印出所執行的消息編譯命令

到此已經完成NDK的編譯操做,每次執行Build Project後就能夠執行編譯和調試開發

配置自動編譯C/C++代碼

對於自動編譯,建議大型工程和頻繁更改的工程不要設置,不然只要編譯目錄文件修改後將會執行編譯,影響工做。

 

第一步:

 

第二:

 

第三:

 

 

 

編譯NDK提示

 

這是因爲使用的是64位的緣由。找到x86ndk安裝包把prebuilt裏面的android-arm拷貝到x64位的路徑文件夾下。

關於修改copy命令暫時未找到。

編寫NDK代碼

首先添加C/C++代碼

 

首先添加extern C,導出該函數,主要避免C/C++之間語法和編譯上的異常問題,直接導出爲C接口的函數。注意函數的字符大小寫須要和對應類名、包名操持一致,要不出現意外。個人例子中是沒有考慮到小寫的問題。

Java_com_jni_helloworld_HelloWorld_Hello:函數名

Java:固定格式

com_jni_helloworld:包的名稱

HelloWorldActivity名稱,相似類名稱

Hello:真正的函數名,上層調用的函數名

 

Java代碼中引用JNI代碼

 

調試NDK代碼

 

首先以安卓方式直接啓動,確認代碼編寫正常,而後肯定模擬器或手機正常啓動運行的狀態下,執行NDK調試。

Debug As->Android Native Appliton

 

當出現問題時直接以Android方式調試,肯定代碼是否編寫正常,或者是模擬器或調試機正常啓動鏈接。

有什麼問題直接回帖,將長期維護本貼

附件

ndk-build經常使用選項

Android NDK引入shell腳本ndk-build,簡化源碼編譯,其實質是對GNU Make的分裝,主要用於調用正確的NDK編譯腳本。Ndk-build必需要gun make3.841及以上版本的make才能正常支持ndk-buildNDK。建議將ndk-build所在的目錄加入PATH環境變量中。

全部給ndk-build的選項都會直接傳給GNU Make,由make運行NDK的編譯腳本。幾個常見調用方式以下:

ndk-build                 編譯

ndk-build clean          清掉二進制文件

ndk-build NDK_DEBUG=1     編譯爲可調試版的二進制文件

ndk-build NDK_DEBUG=0     編譯爲release

ndk-build V=1                       執行ndk-build且打印出它所執行的詳細編譯命令。

ndk-build -B                          強制從新編譯

ndk-build -B V=1                   -B 和 V=1 的組合

ndk-build NDK_LOG=1          打印出內部的NDK日誌信息(用於調試NDK本身)

ndk-build NDK_APP_APPLICATION_MK=<文件路徑>      用這裏指定的路徑尋找Application.mk文件

ndk-build -C <project路徑>  cd進入<project路徑>,而後執行ndk-build

相關文章
相關標籤/搜索