Android.mk--编译Android的模块

Android中的各种模块,无论是APK应用、可执行程序还是jar包,都可以通过Build系统编译生成。在每一个模块的源码目录下,都有一个Android.mk文件,里面包含了模块代码的位置、模块的名称、需要链接的动态库等一系列的定义。

先看一个比较典型的文件:package/apps/Settings/Android.mk,如下:

#设置当前编译目录(包含此Android.mk的目录)
LOCAL_PATH:= $(call my-dir)
#清除LOCAL_XXX变量,LOCAL_PATH除外
include $(CLEAR_VARS)

#指定依赖的共享java类库
LOCAL_JAVA_LIBRARIES := bouncycastle conscrypt telephony-common ims-common
#指定依赖的静态java类库
LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 android-support-v13 jsr305
#定义模块的标签为optional
LOCAL_MODULE_TAGS := optional

#定义源文件列表
LOCAL_SRC_FILES := \
        $(call all-java-files-under, src) \
        src/com/android/settings/EventLogTags.logtags

#可选定义,推荐不定义。默认product package和device package相应的res路径和$(LOCAL_PATH)/res。
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res

#指定模块名称
LOCAL_PACKAGE_NAME := Settings
#指定模块签名使用platform签名
LOCAL_CERTIFICATE := platform
#为true表示此apk将安装到priv-app目录下
LOCAL_PRIVILEGED_MODULE := true

#指定混淆的标志
LOCAL_PROGUARD_FLAG_FILES := proguard.flags

#将下面指定的文件包含进来
include frameworks/opt/setupwizard/navigationbar/common.mk

#指定编译模块的类型为APK
include $(BUILD_PACKAGE)

# Use the following include to make our test apk.
ifeq (,$(ONE_SHOT_MAKEFILE))
#将源码目录下其余的Android.mk都包含进来
include $(call all-makefiles-under,$(LOCAL_PATH))
endif
对于一个模块定义文件Android.mk而言,有几行是必须的,其中最开始的两行是固定的写法:

#设置当前编译目录(包含此Android.mk的目录)
LOCAL_PATH:= $(call my-dir)
#清除LOCAL_XXX变量,LOCAL_PATH除外
include $(CLEAR_VARS)
第二行的作用是包含进clear_vars.mk文件,在这个文件里会将除了LOCAL_PATH变量以外,所有“LOCAL_”开头的变量都清除掉。

在Android.mk文件的结尾一般都会有类似“include $

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值