標籤:
郭孝星
微博:郭孝星的新浪微博
郵箱:[email protected]
部落格:http://blog.csdn.net/allenwells
Github:https://github.com/AllenWells
一 Application.mk檔案的作用和特點
作用:描述應用程式中所需要的模組(靜態庫或動態庫)。
位置:Application.mk通常放在PROJECT/jni/Applicatio.mk,PROJECT指的是項目路徑。
二 Application.mk檔案的變數2.1 APP_PROJECT_PATH
必選變數,並且會給出應用程式工程的根目錄的一個絕對路徑。
2.2 APP_MODULES
可選變數,如果沒有定義,這個模組名字就被定義在Android.mk檔案的LOCAL_MODULE中,NDK將由Android.mk中聲明的預設模組編譯,並且包含所有的子檔案(Makefile檔案),NDK會自動計算模組依賴。如果定義了,它必須是一個空格分隔的模組列表。
2.3 APP_OPTM
可選變數,用來定義release或debug,在編譯應用程式模組的時候,可以用來改變優先順序。release模式是預設的,並且會產生高度最佳化的二進位代碼。debug模式產生的是未最佳化的二進位代碼,也可以檢測很多的bug,也可以用調試。
注意:可以調試release和debug版二進位,但release版構建傾向於調試回話中提供較少資訊,一些變數被最佳化且不能被檢測,代碼重新排序可能導致代碼步進變得困難,堆疊追蹤可能不可靠。
2.4 APP_CFLAGS
一個C編譯器開關集合,在編譯任意模組的任意C或C++原始碼時傳遞。它可以用於改變一個給定的應用程式需要依賴的模組的構建,而不是修改它自身的Android.mk檔案。
2.5 APP_BUILD_SCRIPT
預設,NDK構建系統將在 (APPPROJECTPATH)/jni下尋找一個名為Android.mk的文件。即,對於這個文件(APP_PROJECT_PATH)/jni/Android.mk
如果你想重載這個行為,你可以定義APP_BUILD_SCRIPT指向一個不同的構建指令碼。一個非絕對路徑將總是被解析為相對於NDK頂級目錄的路徑。
2.6 APP_ABI
預設情況下,NDK的編譯系統根據 “armeabi” ABI產生機器代碼。可以使用APP_ABI 來選擇一個不同的ABI。
舉例
在ARMv7的裝置上支援硬體FPU指令。可以使用APP_ABI := armeabi-v7支援IA-32指令集,可以使用APP_ABI := x86同時支援這三種,可以使用APP_ABI := armeabi armeabi-v7a x86。
2.7 APP_STL
預設情況下,NDK構建系統提供由Android系統給出的最小C++執行階段程式庫(/system/lib/libstdc++.so)的C++標頭檔。 然而,NDK帶有另一個C++實現,你可以在你自己的應用程式中使用或連結它。定義APP_STL可以作以下選擇:
APP_STL := stlport_static static STLport libraryAPP_STL := stlport_shared hared STLport libraryAPP_STL := system default C++ runtime library
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
【Android本地開發技術:編譯指令碼】Application.mk