首页 > 代码库 > Android.mk文件的语法解析
Android.mk文件的语法解析
这是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文件的语法解析