肯定下載對應的adt-bundle和NDK,主要兩個軟件的操做系統版本。軟件的版本配置是決定成功的重要因素。android
OS:Windows 7 x64shell
Adt-bundle-windows-x86-x64:Eclipse 4.2.0編程
Adt:windows
NDK:Android-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->Help->Install New Software
打開Android SDK Manager,首先設置網絡代理,由於下載地址被屏蔽只能經過代理下載數據。
Android SDK Manager->Tools->Option
而後刷新開始下載。建議不要更新最新版本,根據自身的NDK的版本下載,我選擇了API19和API21兩個版本的全部文件下載,不要使用過多版本,這樣控制容易出現問題更具須要配置。
首先全選全部的版本,執行刪除操做。
而後在勾選對應的版本進行更新下載。
這裏涉及到:
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
完成之後打開Eclipse->Preference->Android看看是否有NDK選擇,若是沒有就下載一個NDK Plugin插件。com.android.ide.eclipse.ndk_23.0.7.2120684.jar
而後將Eclipse->Preference->Android->NDK路徑指向對應路徑
這樣就完成基礎的環境配置。
由於涉及NDK開發,不建議導入和使用NDK自帶的例子由於問題太多了。在新建過程當中最好minSDKVersion,targetSDKVersion,保持一致要不在後續開發中會出現沒必要要的問題。
首先新建一個Android程序。設置以下:
其餘的採用默認。
Activty Name根據需求自行決定是否更改,我這邊修改成HelloWorld。
新建完成之後的界面
新建完成Android程序之後,在工程樹右鍵Android Tools->Add Native Support
完成操做之後工程樹發生變化,執行一次編譯工程,將會多出Include、libs、jni三個文件夾。
Include:主要存儲C/C++以及NDK使用的頭文件路徑
Libs:主要存儲生成的so文件,區分不一樣的CPU/API
Jni:用於存儲C/C++代碼以及相關的mk文件
打開工程數據屬性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後就能夠執行編譯和調試開發
對於自動編譯,建議大型工程和頻繁更改的工程不要設置,不然只要編譯目錄文件修改後將會執行編譯,影響工做。
第一步:
第二:
第三:
編譯NDK提示
這是因爲使用的是64位的緣由。找到x86的ndk安裝包把prebuilt裏面的android-arm拷貝到x64位的路徑文件夾下。
關於修改copy命令暫時未找到。
首先添加C/C++代碼
首先添加extern 「C」,導出該函數,主要避免C/C++之間語法和編譯上的異常問題,直接導出爲C接口的函數。注意函數的字符大小寫須要和對應類名、包名操持一致,要不出現意外。個人例子中是沒有考慮到小寫的問題。
Java_com_jni_helloworld_HelloWorld_Hello:函數名
Java:固定格式
com_jni_helloworld:包的名稱
HelloWorld:Activity名稱,相似類名稱
Hello:真正的函數名,上層調用的函數名
在Java代碼中引用JNI代碼
首先以安卓方式直接啓動,確認代碼編寫正常,而後肯定模擬器或手機正常啓動運行的狀態下,執行NDK調試。
Debug As->Android Native Appliton
當出現問題時直接以Android方式調試,肯定代碼是否編寫正常,或者是模擬器或調試機正常啓動鏈接。
有什麼問題直接回帖,將長期維護本貼
Android NDK引入shell腳本ndk-build,簡化源碼編譯,其實質是對GNU Make的分裝,主要用於調用正確的NDK編譯腳本。Ndk-build必需要gun make3.841及以上版本的make才能正常支持ndk-build和NDK。建議將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。