標籤:android android.mk local_module_tags
這是RDA8810(Android4.2.2)的Browser模組的Android.mk檔案
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_STATIC_JAVA_LIBRARIES := \
android-common \
guava \
android-support-v13 \
android-support-v4 \
LOCAL_SRC_FILES := \
$(call all-java-files-under,src) \
src/com/android/browser/EventLogTags.logtags
LOCAL_PACKAGE_NAME := Browser
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
LOCAL_EMMA_COVERAGE_FILTER := *,-com.android.common.*
# We need the sound recorder for the Media Capture API.
LOCAL_REQUIRED_MODULES := SoundRecorder
include $(BUILD_PACKAGE)
# additionally, build tests in sub-folders in a separate .apk
include $(call all-makefiles-under,$(LOCAL_PATH))
第一行、LOCAL_PATH:
這個變數用於給出當前檔案的路徑,你必須在Android.mk檔案的開頭定義,這個變數不會被$(CLEAR_VARS)清除,因此每個Android.mk只需要定義一次(即使你在一個檔案中定義了幾個模組的情況下);
第二行、include $(CLEAR_VARS)
CLEAR_VARS由編譯系統提供,指定讓GNU_MAKEFILE為你清除許多LOCAL_XXX變數,除LOCAL_PATH外,這介必要的,因為所有的編譯控制都在同一個GNU MAKE執行環境中,所有變數都是全域的;
第三行、LOCAL_MODULE_TAGS
這個變數有四個選項可以選擇:
1、user:指該模組只在user版本下才編譯;
2、eng:指該模組只在eng版本下才編譯;
3、tests:指該模組只在tests版本下才編譯;
4、optional:指該模組在所有版本下都編譯。
第四行、LOCAL_STATIC_JAVA_LIBRARIES
取 .jar庫的別名,可以隨便取的
第五行、LOCAL_SRC_FILES
列舉所有需要編譯的源檔案,宏all-java-files-under定義在build/core/definitions.mk中
第六行、LOCAL_PACKAGE_NAME
表示這個包的名字,一般和檔案夾的名字一致
第七行、LOCAL_PROGUARD_FLAG_FILES
混淆代碼相關的配置
第八行、LOCAL_EMMA_COVERAGE_FILTER
這個暫時沒能理解,如果有理解了的幫忙解答一下
第九行、LOCAL_REQUIRED_MODULES
配置錄音方面的介面
第十行、include $(BUILD_PACKAGE)
表示當前JAVA代碼build成APK
第十一行、include $(call all-makefiles-under,$(LOCAL_PATH))
表示需要build該目錄下的子目錄的檔案,這樣編譯系統就會在目前的目錄下的子目錄尋找Android.mk來編譯so等其它程式
OVER
Android.mk檔案的文法解析