Application.mk用法詳解

Application.mk文件定義要編譯的多個變量的GNU Makefile片段,位於PROJECT/jni/,PROJECT/jni/目錄下,PROJECT是項目目錄,另一種方式放到NDK/apps/NDK/apps/目錄的子目錄下(NDK/apps//Application.mk);

Application.mk枚舉並描述你的應用需要的模塊,這些信息包括:用於針對特定平臺進行編譯的ABI、工具鏈、要包含的標準庫(靜態和動態STLport或默認系統);
Application變量

  1. APP_PLATFORM
    變量設置Android平臺的名稱;
    eg:APP_PLATFORM := android-9
  2. APP_ABI
    NDK構建系統默認使用armeabi ABI生成機器代碼,可以自己進行設置,
    eg:APP_ABI :=armeabi
    可以瞭解ABI詳情
  3. APP_PROJECT_PATH
    此變量用於存儲應用項目根目錄的絕對路徑,如果Application.mk文件放在NDK/apps/<myapp>NDK/apps/<myapp>下必須設置此變量,如果放在PROJECT/jni/目錄下此變量可選
  4. APP_OPTIM
    此變量值爲release或debug,默認爲release發行模式,生成高度優化的二進制文件,設置debug模式生成未優化的二進制文件,容易進行調試;
    注:如果在AndroidMainfest.xml的聲明android:debuggable=true將導致此變量使用debug而非release,可以通過設置release替換默認值;
  5. APP_BUILD_SCRIPT
    默認情況下,NDK構建系統在jni/下查找名稱爲Android.mk的文件;以通過APP_BUILD_SCRIPT定義指向構建腳本;
  6. APP_STL
    默認情況下,NDK構建系統爲Android系統提供的最小C++運行時庫(system/lib/libstdc++.so), 說明一下,system C++運行庫要被廢除了,很多情況下C++ STL功能無法使用。所以最好加上 APP_STL := c++_shared 這樣的腳本。NDK運行時和功能需要的C++庫可以參考:[C++支持庫;]
    https://developer.android.google.cn/ndk/guides/cpp-support.html#runtimes
  7. APP_PIE
    從Android4.1(API Level 16)開始,Android的動態鏈接器支持位置獨立的可執行文件(PIE); 從Android 5.0(API Level 21)開始可執行文件需要PIE. 默認情況下,從android-16起ndk-build會自動將此值設置爲true,也可也同手動設置true或false;此標誌只適用於可執行文件,在構建共享或靜態庫時沒有影響;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章