Application.mk文件定義要編譯的多個變量的GNU Makefile片段,位於PROJECT是項目目錄,另一種方式放到NDK/apps//Application.mk);
Application.mk枚舉並描述你的應用需要的模塊,這些信息包括:用於針對特定平臺進行編譯的ABI、工具鏈、要包含的標準庫(靜態和動態STLport或默認系統);
Application變量
- APP_PLATFORM
變量設置Android平臺的名稱;
eg:APP_PLATFORM := android-9 - APP_ABI
NDK構建系統默認使用armeabi ABI生成機器代碼,可以自己進行設置,
eg:APP_ABI :=armeabi
可以瞭解ABI詳情 - APP_PROJECT_PATH
此變量用於存儲應用項目根目錄的絕對路徑,如果Application.mk文件放在PROJECT/jni/目錄下此變量可選 - APP_OPTIM
此變量值爲release或debug,默認爲release發行模式,生成高度優化的二進制文件,設置debug模式生成未優化的二進制文件,容易進行調試;
注:如果在AndroidMainfest.xml的聲明android:debuggable=true將導致此變量使用debug而非release,可以通過設置release替換默認值; - APP_BUILD_SCRIPT
默認情況下,NDK構建系統在jni/下查找名稱爲Android.mk的文件;以通過APP_BUILD_SCRIPT定義指向構建腳本; - 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 - APP_PIE
從Android4.1(API Level 16)開始,Android的動態鏈接器支持位置獨立的可執行文件(PIE); 從Android 5.0(API Level 21)開始可執行文件需要PIE. 默認情況下,從android-16起ndk-build會自動將此值設置爲true,也可也同手動設置true或false;此標誌只適用於可執行文件,在構建共享或靜態庫時沒有影響;