首次解析Android.mk
2016-08-11 本文已影响295人
悟剑声
SystemUI包中的Android.mk
(android-5.1.0-r3)
#首先必须定义好LOCAL_PATH变量。
#它用于在开发树中查找源文件。
LOCAL_PATH:= $(call my-dir)
#指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量( LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES等),
#除LOCAL_PATH 。因为所有的编译控制文件都在同一个GNU MAKE执行环境中,所有的变量都是全局的。
include $(CLEAR_VARS)
#user: 指该模块只在user版本下才编译
#eng: 指该模块只在eng版本下才编译
#tests: 指该模块只在tests版本下才编译
#optional:指该模块在所有版本下都编译
LOCAL_MODULE_TAGS := optional
#这是要编译的源代码文件列表。
LOCAL_SRC_FILES := $(call all-java-files-under, src) \
src/com/android/systemui/EventLogTags.logtags
#指定依赖的静态java类库
LOCAL_STATIC_JAVA_LIBRARIES := Keyguard
#指定依赖的共享java类库
LOCAL_JAVA_LIBRARIES := telephony-common
#指定生成apk的名字
LOCAL_PACKAGE_NAME := SystemUI
#指定签名key
#不同的应用程序之间,想共享数据,或者共享代码,那么要让他们运行在同一个进程中,而且要让他们用相同的证书签名。
LOCAL_CERTIFICATE := platform
#声明app需要放在/system/priv-app
LOCAL_PRIVILEGED_MODULE := true
#指定不需要混淆的native方法与变量的proguard.flags文件
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
#指定资源路径,默认在$(LOCAL_PATH)/res
LOCAL_RESOURCE_DIR := \
frameworks/base/packages/Keyguard/res \
$(LOCAL_PATH)/res
#自动添加资源
LOCAL_AAPT_FLAGS := --auto-add-overlay --extra-packages com.android.keyguard
#编译
include $(BUILD_PACKAGE)
#执行子目录下的makefile
include $(call all-makefiles-under,$(LOCAL_PATH))
其他
- 变量
LOCAL_PATH - 编译时的目录
LOCAL_MODULE - 编译的目标对象
LOCAL_SRC_FILES - 编译的源文件
LOCAL_C_INCLUDES - 需要包含的头文件目录
LOCAL_SHARED_LIBRARIES - 链接时需要的外部库
LOCAL_PRELINK_MODULE - 是否需要prelink处理
BUILD_STATIC_LIBRARY - 指明要编译成静态库
BUILD_SHARED_LIBRARY - 指明要编译成动态库 - 函数