LOCAL_PATH:
這個(gè)變量用于給出當(dāng)前文件的路徑爆阶。必須在 Android.mk
的開頭定義禾唁,可以這樣使用:LOCAL_PATH := $(call my-dir)
如當(dāng)前目錄下有個(gè)文件夾名稱 src
,則可以這樣寫 $(call src)
所宰,那么就會得到 src
目錄的完整路徑這個(gè)變量不會被$(CLEAR_VARS)
清除堪旧,因此每個(gè) Android.mk
只需要定義一次(即使在一個(gè)文件中定義了幾個(gè)模塊的情況下)。
LOCAL_MODULE:
這是模塊的名字,它必須是唯一的呆万,而且不能包含空格蚓挤。必須在包含任一的$(BUILD_XXXX)
腳本之前定義它磺送。模塊的名字決定了生成文件的名字驻子。
LOCAL_SRC_FILES:
這是要編譯的源代碼文件列表。只要列出要傳遞給編譯器的文件估灿,因?yàn)榫幾g系統(tǒng)自動計(jì)算依賴崇呵。注意源代碼文件名稱都是相對于 LOCAL_PATH
的,你可以使用路徑部分馅袁,例如:LOCAL_SRC_FILES := foo.c toto/bar.c\Hello.c
文件之間可以用空格或Tab鍵進(jìn)行分割,換行請用""如果是追加源代碼文件的話域慷,請用LOCAL_SRC_FILES +=
注意:可以LOCAL_SRC_FILES := $(call all-subdir-java-files)
這種形式來包含local_path
目錄下的所有java文件。
LOCAL_C_INCLUDES:
可選變量汗销,表示頭文件的搜索路徑犹褒。默認(rèn)的頭文件的搜索路徑是LOCAL_PATH
目錄。
LOCAL_STATIC_LIBRARIES:
表示該模塊需要使用哪些靜態(tài)庫弛针,以便在編譯時(shí)進(jìn)行鏈接叠骑。
LOCAL_SHARED_LIBRARIES:
表示模塊在運(yùn)行時(shí)要依賴的共享庫(動態(tài)庫),在鏈接時(shí)就需要削茁,以便在生成文件時(shí)嵌入其相應(yīng)的信息宙枷。注意:它不會附加列出的模塊到編譯圖,也就是仍然需要在Application.mk
中把它們添加到程序要求的模塊中茧跋。
LOCAL_LDLIBS:
編譯模塊時(shí)要使用的附加的鏈接器選項(xiàng)慰丛。這對于使用‘-l’前綴傳遞指定庫的名字是有用的。例如厌衔,LOCAL_LDLIBS := -lz
表示告訴鏈接器生成的模塊要在加載時(shí)刻鏈接到/system/lib/libz.so
璧帝。可查看 docs/STABLE-APIS.TXT 獲取使用 NDK發(fā)行版能鏈接到的開放的系統(tǒng)庫列表富寿。
LOCAL_MODULE_PATH 和 LOCAL_UNSTRIPPED_PATH
在 Android.mk
文件中睬隶, 還可以用LOCAL_MODULE_PATH
和LOCAL_UNSTRIPPED_PATH
指定最后的目標(biāo)安裝路徑.
不同的文件系統(tǒng)路徑用以下的宏進(jìn)行選擇:
TARGET_ROOT_OUT:表示根文件系統(tǒng)。
TARGET_OUT:表示 system文件系統(tǒng)页徐。
TARGET_OUT_DATA:表示 data文件系統(tǒng)苏潜。
用法如:LOCAL_MODULE_PATH :=$(TARGET_ROOT_OUT)
至于LOCAL_MODULE_PATH
和LOCAL_UNSTRIPPED_PATH
的區(qū)別,暫時(shí)還不清楚变勇。
LOCAL_JNI_SHARED_LIBRARIES:
定義了要包含的so庫文件的名字恤左,如果程序沒有采用jni,不需要LOCAL_JNI_SHARED_LIBRARIES := libxxx
這樣在編譯的時(shí)候搀绣,NDK自動會把這個(gè)libxxx打包進(jìn)apk飞袋; 放在youapk/lib/
目錄下