1、ndk-build的用法
Android NDKr4引入了一個新的、小巧的shell腳本ndk-build,來簡化源碼編譯。
該文件位於NDK根目錄,進入你的工程根目錄或子目錄之后,在命令行下調用即可。例如:
cd $PROJECT
$NDK/ndk-build
NDK指向你的NDK的安裝目錄,PROJECT指向你的Android工程目錄。建議將ndk-build所在目錄加入PATH環境變量或設置alias。
2、ndk-build的選項
所有給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。
3、Debug版本 Vs Release版本
在NDKr5中,ndk-build做了一些改進,使得在release和debug之間切換更容易了。即通過 NDK_DEBUG 變量:
ndk-build NDK_DEBUG=1 編譯出的共享庫帶調試信息,是debug版本
ndk-build NDK_DEBUG=0 編譯出的共享庫不帶調試信息,是release版本
如果沒有指定NDK_DEBUG,則會從 AndroidManifest.xml中獲取(查看 <application> 元素是否有 android:debuggable="true")。
注意:如果你的SDK是SDKr8或更高,完全不需要修改AndroidManifest.xml。因為如果你想編譯出debug版安裝包(在命令行下執行 ant debug或用ADT),SDK的工具會自動選擇用NDK_DEBUG=1編譯出的共享庫。NDK編譯出的debug版和release版的object文件存放在不同的目錄(例如 obj/local/<abi>/objs 和 obj/local/<abi>/objs-debug),避免了在release和debug之間切換而重新編譯所有文件。
4、ndk-build的使用條件
總體來說,必須安裝GNU Make 3.81 以上版本的make才能正常使用ndk-build和NDK。
5、ndk-build的實質
ndk-build 其實就是對GNU Make的封裝,它的目的是調用正確的NDK編譯腳本,它等價於 make -f $NDK/build/core/build-local.mk [參數]