NDK Build 用法

LiuYinChina發表於2013-08-23

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 [引數]

相關文章