APP的Android.mk文件分析

[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)先清除編譯系統依賴的重要的編譯變量,再生成新的編譯變量。

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