[plain] view plaincopyprint?
1. # 調用宏my-dir,這個宏返回當前Android.mk文件所在的路徑
2. LOCAL_PATH:= $(call my-dir)
3.
4. # 包含CLEAR_VARS變量指向的mk文件build/core/clear_vars.mk,它主要用來清除編譯時依賴的編譯變量
5. include $(CLEAR_VARS)
6.
7. # 指定當前目標的TAG標籤,關於其作用見前面Android編譯系統章節
8. LOCAL_MODULE_TAGS := user
9.
10. # 當前mk文件的編譯目標模塊
11. LOCAL_PACKAGE_NAME := LedDemo
12.
13. # 編譯目標時依賴的源碼,它調用了一個宏all-java-files-under,該宏在build/core/definitions.mk中定義
14. # 表示在當前目錄下查找所有的java文件,將查找到的java文件返回
15. LOCAL_SRC_FILES := $(callall-java-files-under, src)
16.
17. # 在編譯Android應用程序時都要指定API level,也就是當前程序的編譯平臺版本
18. # 這裏表示使用當前源碼的版本
19. LOCAL_SDK_VERSION := current
20.
21. # 最重要的就是這句代碼,它包含了一個文件build/core/package.mk,根據前面設置的編譯變量,編譯生成Android包文件,即:apk文件
22. include $(BUILD_PACKAGE)
# 調用宏my-dir,這個宏返回當前Android.mk文件所在的路徑
LOCAL_PATH:= $(call my-dir)
# 包含CLEAR_VARS變量指向的mk文件build/core/clear_vars.mk,它主要用來清除編譯時依賴的編譯變量
include $(CLEAR_VARS)
# 指定當前目標的TAG標籤,關於其作用見前面Android編譯系統章節
LOCAL_MODULE_TAGS := user
# 當前mk文件的編譯目標模塊
LOCAL_PACKAGE_NAME := LedDemo
# 編譯目標時依賴的源碼,它調用了一個宏all-java-files-under,該宏在build/core/definitions.mk中定義
# 表示在當前目錄下查找所有的java文件,將查找到的java文件返回
LOCAL_SRC_FILES := $(callall-java-files-under, src)
# 在編譯Android應用程序時都要指定API level,也就是當前程序的編譯平臺版本
# 這裏表示使用當前源碼的版本
LOCAL_SDK_VERSION := current
# 最重要的就是這句代碼,它包含了一個文件build/core/package.mk,根據前面設置的編譯變量,編譯生成Android包文件,即:apk文件
include $(BUILD_PACKAGE)
上述代碼中都加了註釋,基本上每一個編譯目標都有類似上述的編譯變量的聲明:
LOCAL_MODULE_TAGS
LOCAL_PACKAGE_NAME
LOCAL_SRC_FILES
由於所有的Android.mk最終被編譯系統包含,所以在編譯每個目標模塊時,都要通過LOCAL_PATH:= $(call my-dir)指定當前目標的目錄,然後調用include $(CLEAR_VARS)先清除編譯系統依賴的重要的編譯變量,再生成新的編譯變量。