Android.mk 用法解析2



package/app/Settings/Android.mk

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := Settings
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))

            PS:GNU Make‘功能’宏,必须通过使用'$(call  )'来调用,调用他们将返回文本化的信息。

(1) LOCAL_PATH:= $(call my-dir)

           一个Android.mk file首先必须定义好LOCAL_PATH变量。它用于在开发树中查找源文件。宏函数’my-dir’,由编译系统提供,用于返回当前路径(即包含Android.mk file文件

          的目录)。

           (2) Android.mk中可以定义多个编译模块,每个编译模块都是以include $(CLEAR_VARS)开始,以include $(BUILD_XXX)结束。

(2.1) include $(CLEAR_VARS)

           CLEAR_VARS指的是clear_vars.mk,由编译系统提供,它会让GNU MAKEFILE为你清除除LOCAL_PATH以外的所有LOCAL_XXX变量,如LOCAL_MODULE,

            LOCAL_SRC_FILES,LOCAL_SHARED_LIBRARIES,LOCAL_STATIC_LIBRARIES等。这是必要的,因为所有的编译控制文件都在同一个GNU MAKE执行环境中,

            所有的变量都是全局的。

(2.2) include $(BUILD_PACKAGE)      # Tell it to build an APK

            $(BUILD_PACKAGE)是用来编译生成package/app/下的apk。还有其他几种编译情况:
            include $(BUILD_STATIC_LIBRARY)    表示编译成静态库;
            include $(BUILD_SHARED_LIBRARY)    表示编译成动态库;
            include $(BUILD_EXECUTABLE)        表示编译成可执行程序;

(3) LOCAL_MODULE_TAGS := optional

            解析:LOCAL_MODULE_TAGS :=user eng tests optional;
            user:  指该模块只在user版本下才编译;
            eng:  指该模块只在eng版本下才编译;
            tests: 指该模块只在tests版本下才编译;
            optional:指该模块在所有版本下都编译;
            取值范围debug eng tests optional samples shell_ash shell_mksh。注意不能取值user,如果要预装,则应定义core.mk。

(4) LOCAL_SRC_FILES := $(call all-java-files-under, src)

            (4.1) 如果要包含的是java源码的话,可以调用all-java-files-under得到。(这种形式来包含local_path目录下的所有java文件);
            (4.2) 当涉及到C/C++时,LOCAL_SRC_FILES变量就必须包含将要编译打包进模块中的C或C++源代码文件。注意,在这里你可以不用列出头文

            件和包含文件,因为编译系统将会自动为你找出依赖型的文件;仅仅列出直接传递给编译器的源代码文件就好。all-java-files-under宏的定义是在

            build/core/definitions.mk中。

(5) LOCAL_PACKAGE_NAME := Settings

    package的名字,这个名字在脚本中将标识这个app或package。

(6) LOCAL_CERTIFICATE := platform

              LOCAL_CERTIFICATE 后面是签名文件的文件名,说明Settings.apk是一个需要platform

              key签名的APK

(7) include $(BUILD_PACKAGE)

(8) include $(call all-makefiles-under,$(LOCAL_PATH))

            加载当前目录下的所有makefile文件,all-makefiles-under会返回一个位于当前'my-dir'路径的子目录中的所有Android.mk的列表。all-makefiles-under宏的定义是在

          build/core/definitions.mk中。

          编译此Android.mk文件最后就生成了Settings.apk。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值