Android.mk

Android.mk是安卓编译一个模块的时候所使用的文件。

示例

通常的Android.mk会写成下面的样式

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE:=

LOCAL_SRC_FILES :=

include $(BUILD_SHARED_LIBRARY)

下面解释各个参数的意义

  • LOCAL_MODULE_TAGS解释:
    控制此模块在什么情况下编译,一般为下面写法:

LOCAL_MODULE_TAGS:= optional
可选择的几个值:
user:指该模块只在user版本下才编译
eng: 指该模块只在eng版本下才编译
tests: 指该模块只在tests版本下才编译
optional:指该模块在所有版本下都编译

  • include $(CLEAR_VARS)
    CLEAR_VARS变量是生成系统提供的,它指向一个特殊的GNU Makefile.这个Makefile将会为你自动清除 许多名为LOCAL_XXX的变量(比如:LOCAL_MODULE,LOCAL_SRC_FILES,LOCAL_STATIC_LIBRARIES,,,),
    但LOCAL_PATH是例外,它不会被清除。这些变量的清除是必须的,因为所有的控制文件是在单一的GNU make执行环境中解析的,在这里所有的变量都是全局的。

3.LOCAL_PATH
这个变量用来设置当前文件的路径。必须在Android.mk的开始处定义它,比如:
LOCAL_PATH := $(call my-dir)

这个变量不会被$(CLEAR_VARS)消除,所以每个Android.mk仅需一个定义(以防你在同一个文件里定义几个组件)。

  • LOCAL_MODULE := xxx
    此mk文件生成的目标名称,包括动态库,静态库和可执行程序三种形式,如果为动态库,会生成libxxx.so文件

  • LOCAL_SRC_FILES := xxx.c
    生成目标程序/库需要的源文件(*.c, .cpp,.java)列表

  • include $(BUILD_SHARED_LIBRARY)
    编译此模块为动态库

  • include $(BUILD_STATIC_LIBRARY)
    生成静态库

  • include $(BUILD_EXECUTABLE)
    生成可执行程序

  • LOCAL_SHARED_LIBRARIES
    程序依赖的动态库列表,例如
    LOCAL_SHARED_LIBRARIES :=
    libutils

  • LOCAL_STATIC_LIBRARIES
    程序依赖的静态库列表,这些库是本工程中编译出来的另外的一些库,被本目标以来,如果是第三方的库,则放在LOCAL_LDLIBS中指定

  • LOCAL_CFLAGS += -Wall -Werror
    编译c文件的参数,如设置Wall,优化级别等编译器参数,指定宏定义等等。相当于gcc后面的编译参数

  • LOCAL_C_INCLUDES +=
    头文件列表

  • include $(BUILD_HOST_STATIC_LIBRARY)
    生成宿主机静态库

*注:一个Android.mk文件可以指定生成不止一个模块

例如:
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

include $(LOCAL_PATH)/hidl.mk

LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/src/java frameworks/opt/telephony/src/java
LOCAL_SRC_FILES := $(call all-java-files-under, src/java) \
        $(call all-Iaidl-files-under, src/java) \
        $(call all-logtags-files-under, src/java)

LOCAL_MODULE_TAGS := optional

LOCAL_JAVA_LIBRARIES := telephony-common mediatek-framework mediatek-telephony-base
LOCAL_JAVA_LIBRARIES += mediatek-common ims-common mediatek-telecom-common mediatek-ims-common
LOCAL_JAVA_LIBRARIES += services

LOCAL_STATIC_JAVA_LIBRARIES += wfo-common
LOCAL_MODULE := mediatek-telephony-common

include $(BUILD_JAVA_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := mediatek-ims-fundament-telephony

LOCAL_SRC_FILES += \
    src/java/com/mediatek/internal/telephony/MtkCallFailCause.java \
    src/java/com/mediatek/internal/telephony/RadioCapabilitySwitchUtil.java \
    src/java/com/mediatek/internal/telephony/ratconfiguration/RatConfiguration.java \
    src/java/com/mediatek/internal/telephony/MtkCallForwardInfo.java \

LOCAL_MODULE_TAGS := optional
LOCAL_JAVA_LIBRARIES := framework telephony-common mediatek-telephony-base ims-common

include $(BUILD_STATIC_JAVA_LIBRARY)

上面的代码就会生成两个目标文件,一个是静态库mediatek-ims-fundament-telephony,另一个也是java库mediatek-telephony-common。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值