宏my-dir 则由Build System提供。返回包含Android.mk的目录路径
#LOCAL_PATH表示当前目录的地址,一般位于include $(CLEAR_VARS)之前
LOCAL_PATH:= $(call my-dir)
#CLEAR_VARS对应的是clean_vars.mk,用于清除除了LOCAL_PATH以外的所有LOCAL_打头的变量
include $(CLEAR_VARS)
#重定向java库文件
LOCAL_JAVA_LIBRARIES := bouncycastle conscrypt telephony-common ims-common
#重定向java静态库文件
LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 android-support-v13 jsr305
#模块tag为optional,表示不管是选择了什么模式都会编译该模块
LOCAL_MODULE_TAGS := optional
#重定向本地源码
LOCAL_SRC_FILES := \
$(call all-java-files-under, src) \
src/com/android/settings/EventLogTags.logtags
#重定向本地资源文件
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
#模块名
LOCAL_PACKAGE_NAME := Settings
#模块证书签名
LOCAL_CERTIFICATE := platform
#是否是特权文件
LOCAL_PRIVILEGED_MODULE := true
#使用代码混淆
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
#判断是否进行增量编译
ifneq ($(INCREMENTAL_BUILDS),)
LOCAL_PROGUARD_ENABLED := disabled
LOCAL_JACK_ENABLED := incremental
endif
#include三个makefile文件,进项相关变量赋值
include frameworks/opt/setupwizard/navigationbar/common.mk
include frameworks/opt/setupwizard/library/common.mk
include frameworks/base/packages/SettingsLib/common.mk
#开始编译Settings模块,对应package.mk文件。感兴趣的可以进一步研究apk是怎么被编译出来的,里面还是很复杂的
include $(BUILD_PACKAGE)
# 如果使用的是mm或mmm命令单编Settings模块的话会额外include test目录下的Android.mk,用于编译测试模块。
ifeq (,$(ONE_SHOT_MAKEFILE))
include $(call all-makefiles-under,$(LOCAL_PATH))
endif
Function: all-subdir-java-files
从当前目录查找所有java文件
使用范例: SRC_FILES := $(call all-subdir-java-files)
Function: all-java-files-under
找出当前makefile所在目录的指定子目录里的所有java文件
$(1) 指定子目录
使用范例:SRC_FILES := $(call all-java-files-under,src tests)