Android.mk文件模塊詳解

LOCAL_PATH:

這個變量用於給出當前文件的路徑。必須在 Android.mk 的開頭定義,可以這樣使用:LOCAL_PATH := $(call my-dir)

如當前目錄下有個文件夾名稱 src,則可以這樣寫 $(call src),那麼就會得到 src 目錄的完整路徑這個變量不會被$(CLEAR_VARS)清除,因此每個 Android.mk只需要定義一次(即使在一個文件中定義了幾個模塊的情況下)。

LOCAL_MODULE:

這是模塊的名字,它必須是唯一的,而且不能包含空格。必須在包含任一的$(BUILD_XXXX)腳本之前定義它。模塊的名字決定了生成文件的名字。

LOCAL_SRC_FILES:

這是要編譯的源代碼文件列表。只要列出要傳遞給編譯器的文件,因爲編譯系統自動計算依賴。注意源代碼文件名稱都是相對於 LOCAL_PATH的,你可以使用路徑部分,例如:LOCAL_SRC_FILES := foo.c toto/bar.c\Hello.c

文件之間可以用空格或Tab鍵進行分割,換行請用""如果是追加源代碼文件的話,請用LOCAL_SRC_FILES +=

注意:可以LOCAL_SRC_FILES := $(call all-subdir-java-files)這種形式來包含local_path目錄下的所有java文件。

LOCAL_C_INCLUDES:

可選變量,表示頭文件的搜索路徑。默認的頭文件的搜索路徑是LOCAL_PATH目錄。

LOCAL_STATIC_LIBRARIES:

表示該模塊需要使用哪些靜態庫,以便在編譯時進行鏈接。

LOCAL_SHARED_LIBRARIES:

表示模塊在運行時要依賴的共享庫(動態庫),在鏈接時就需要,以便在生成文件時嵌入其相應的信息。注意:它不會附加列出的模塊到編譯圖,也就是仍然需要在Application.mk中把它們添加到程序要求的模塊中。

LOCAL_LDLIBS:

編譯模塊時要使用的附加的鏈接器選項。這對於使用‘-l’前綴傳遞指定庫的名字是有用的。例如,LOCAL_LDLIBS := -lz表示告訴鏈接器生成的模塊要在加載時刻鏈接到/system/lib/libz.so。可查看 docs/STABLE-APIS.TXT 獲取使用 NDK發行版能鏈接到的開放的系統庫列表。

LOCAL_MODULE_PATH 和 LOCAL_UNSTRIPPED_PATH

Android.mk 文件中, 還可以用LOCAL_MODULE_PATHLOCAL_UNSTRIPPED_PATH指定最後的目標安裝路徑.

不同的文件系統路徑用以下的宏進行選擇:

TARGET_ROOT_OUT:表示根文件系統。

TARGET_OUT:表示 system文件系統。

TARGET_OUT_DATA:表示 data文件系統。

用法如:LOCAL_MODULE_PATH :=$(TARGET_ROOT_OUT)至於LOCAL_MODULE_PATHLOCAL_UNSTRIPPED_PATH的區別,暫時還不清楚。

LOCAL_JNI_SHARED_LIBRARIES:

定義了要包含的so庫文件的名字,如果程序沒有采用jni,不需要LOCAL_JNI_SHARED_LIBRARIES := libxxx 這樣在編譯的時候,NDK自動會把這個libxxx打包進apk; 放在youapk/lib/目錄下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章