Android ndk 開發環境配置與除錯(linux)
一、 Android NDK:
集成了android交叉編譯器,針對不同版本android平臺提供了相應的gcc、g++、ndk-build、ndk-gdb等一系列編譯和除錯工具。
安裝ndk:
安裝包選擇:
選擇安裝包需要注意幾點:
1、 Android手機是32位還是64位,預設是32位,r9以前的只有32位,r10之後出現了64位的,需要注意,比如64位,則應該含有ndk64
2、 從r6開始各版本分為a,b,c,d系列,例如r9版本分為r9,r9b,r9c,r9d,一般選擇r9或r10,r9d或r10d驗證都存在一些問題
3、 編譯主機系統是什麼系統,32位還是64位的,比如是ubuntu 64位機,則應該是linux-x86_64
比如,下載以64位linux系統作為主機的,32位android 平臺的r10版本的ndk,下載地址為:http://dl.google.com/android/ndk/android-ndk32-r10-linux-x86_64.tar.bz2
安裝步驟(這裡選ndk 32位android系統,主機系統為32位linux系統,r9版本):
第一步:解壓:tar jxvf android-ndk-r9-linux-x86.tar.bz2
第二步: 解壓完成後進入ndk路徑/build/tool/,開始配置環境,使用命令:
sudo ./make-standalone-toolchain.sh --platform=android-18
說明:
android-18:使用的android APILEVEL,platform資料夾下可以看到,這裡使用的是18
下表是android API 級別與android 版本的對應關係
API level |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
Android 版本 |
4.4 |
4.3 |
4.2 |
4.1 |
4.03 |
4.0.0~4.02 |
3.2 |
3.1.x |
3.0.x |
2.3.3,2.3.4 |
2.3.0~2.3.2 |
2.2.x |
後面分別為ndk解壓後的目錄,和安裝的目標目錄。
第三步:配置路徑,為了方便使用ndk的工具,可以將ndk的路徑加入環境變數。終端輸入:
exportPATH=$PATH:/home/ndk,這樣我們可以在任意地方直接使用ndk-build,ndk-gdb命令了。
exportPATH=$PATH:/opt/android-18-toolchain/bin ,主要是交叉編譯器工具集。
這樣就配置完成了。
二、 Android SDK:
提供了android sdk開發包直接將sdl庫或執行檔案與java程式碼一起編譯成apk,但過程較繁瑣,我們直接使用ant即可。還提供了adb、android模擬器等工具。
安裝:adt-bundle-linux-x86-20140321.zip
推薦下載網址:http://pan.baidu.com/s/1AB9in
解壓命令同上,解壓完成後即可使用了,裡面包含eclipse和sdk,不需要再進行配置其他,直接使用。
並將tools、platform-tools加入環境變數,這樣就可以直接使用adb和模擬器了
三、 Ant工具:
ant本來是sdk的一個子工具,但由於它集成了sdk的許多功能,用於一步打包成apk。
安裝:apache-ant-1.9.4-bin.tar.gz
解壓命令:tar -zxvf apache-ant1.9.4-bin.tar.gz
解壓後,將bin目錄加入環境變數,就可以直接使用ant命令了。
打包apk只需要在android工程目錄下執行:ant release
四、 工具使用
1) ndk交叉編譯
在cmakelist裡將編譯器路徑替換成ndk編譯器路徑即可編譯成可以在android上執行的程序
SET(NDK_PATH “/opt/android-18-toolchain”)
SET(CMAKE_CXX_COMPILER "${NDK_PATH}/bin/arm-linux-androideabi-g++")
SET(CMAKE_C_COMPILER "${NDK_PATH}/bin/arm-linux-androideabi-gcc")
2) 建立android工程
建立一個空資料夾,執行:
android create project --name proname --target android-19 --path ./ --package com.proname --activity activity_name
比如建立一個sdl的android工程:
android create project --name SmartDevice --target android-18 --path ./ --package com.SmartDevice --activity MainActive
其中,target 想使用哪個,可以根據上表選擇,但有些可能沒有安裝,可以通過命令:android list target 來檢視
3) 更新android工程
從其他地方轉移過來的android工程或想更新API LEVEL,或想更新專案名稱可以使用以下命令:
android update project --name proname --target android-19 --path ./ --package com.proname--activity activity_name
如想更新API LEVEL,只需要執行
android updateproject --target android-18 --path ./
4) 打包成apk
在android工程目錄下,執行:ant release
5) 安裝apk
Usb資料線連線好手機後,執行:adb install –r ***.apk
Android sdl編譯
一、 編譯sdl
1、 建立一個空目錄
2、 進入目錄,執行:
cmake -DSYSTEM_NAME="Android" -DCMAKE_BUILD_TYPE="Release" -DCOMPILIER_PATH="/opt/android-18-toolchain" project_path
Ø 執行完後應該可以看到 current buildsystem is Android這樣的資訊。
Ø -DSYSTEM_NAME 是設定執行系統,這裡必須設定成 "Android"
Ø -DCOMPILIER_PATH 是設定NDK的根目錄,這裡是"/opt/android-18-toolchain"
3、 執行make,開始編譯
4、等第3步完成後,執行make install,會生成一個bin目錄,編譯完成。
二、 生成apk
1、 從git上獲取android_sdl_apk_build分支的android程式碼,裡面有一個assets目錄,將sdl的bin目錄下的所有檔案拷到assets下
2、更新Android 工程環境,執行android update project -p ./
Ø 其中./表示更新後存放在當前目錄
Ø android命令是sdk提供的,所以需先安裝sdk。
Ø 這一步僅限於第一次打包,第二次以後可以省略
3、 執行ant release,執行過程中會連續兩次提示輸入簽名信息和金鑰,兩次都直接輸入8888888即可。
Ø 生成一個apk檔案,找到bin/SmartDeviceLink-release.apk。
三、 安裝
兩種方法:
1、 直接安裝
將apk檔案放到安卓手機上,直接點選即可安裝
2、 adb 安裝
將手機連線電腦,在控制檯上執行:adbinstall -r ***.apk
Ø adb工具 一般存放在sdk安裝目錄的platform-tools下,也可以單獨下載adb工具