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