Android.mk 用法解析整理

站长的个人作品

Android.mk 还是整理一下,有时候还是忘记了,这里只是讲解一部分,其他的自己百度或谷歌吧。

 

编译一个APK的Android.mk文件

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

#指定依赖的共享Java类库
LOCAL_JAVA_LIBARARIES := android-common
#指定依赖的静态Java类库
LOCAL_STATIC_JAVA_LIBRARIES := android-support-v13 

#指定源码文件目录,这里定义搜寻src目录中的
LOCAL_SRC_FILES := $(call all-subdir-java-files,src)
#这种也可以,没指定哪个目录
#LOCAL_SRC_FILES := $(call all-subdir-java-files)

#指定模块的标签
LOCAL_MODULE_TAGS := optional
#指定当前编译环境中的SDK版本(通常不设定)
#若是添加,编译时会忽略源码隐藏的API,导致编译失败
LOCAL_SDK_VERSION := current
#指定编译后模块的名称
LOCAL_PACKAGE_NAME := MyAvm
#指定模块的签名方式
LOCAL_CERTIFICATE := platform
#指定编译一个APK
include $(BUILD_PACKAGE)

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

一、LOCAL_MODULE_TAGS

指定模块的TAG标签,其后面可以跟user eng tests optional这四种tag,不同tag代表不同的作用。

user: 指该模块只在user版本下才编译
eng: 指该模块只在eng版本下才编译
tests: 指该模块只在tests版本下才编译
optional:指该模块在所有版本下都编译

一般我们项目中都是使用optional 作为默认的TAG

二、LOCAL_SDK_VERSION

通常是不会增加此选项的。但是我们还是要搞定一下这个选项的意义。

如果你是添加LOCAL_SDK_VERSION := current 此选项,此APK在编译时会忽略源码隐藏的API,如果你用了隐藏(hide)的API就会编译异常。

三、LOCAL_CERTIFICATE

1、LOCAL_CERTIFICATE := platform

该APK完成一些系统的核心功能。经过对系统中存在的文件夹的访问测试,这种方式编译出来的APK所在进程的UID为system

2、LOCAL_CERTIFICATE := shared

该APK需要和home/contacts进程共享数据。

3、LOCAL_CERTIFICATE := media

该APK是media/download系统中的一环。

4、LOCAL_CERTIFICATE := testkey

普通APK,默认情况下使用
PS: 此部分摘抄于《对于mk文件的理解

 

目前就这些吧,后续继续整理。

历史上的今天:

温馨提示:文章内容系作者个人观点,不代表博客志对观点赞同或支持。
版权声明:本文为投稿文章,感谢 125啦读书导航(125la.com) 的投稿,欢迎分享本文,转载请保留出处!
站长的个人作品
125la导航_独立博客导航平台

发表评论

您必须 [登录] 才能发表留言!

或者微信联系我