Android.mk 用法解析整理

Android  2019年5月9日 pm7:30发布6年前 (2019)更新 城堡大人
97 0 0


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文件的理解

 

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

 历史上的今天

  1. 2024: Android关闭selinux(0条评论)
  2. 2023: IJKPlayer和MediaPlayer切换问题(0条评论)
  3. 2022: C语言输出格式符(0条评论)
  4. 2018: [摘]UML类图符号的各种关系说明(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

adb shell settings 参数命令集合

前言Android中配置有很多参数,一般可以通过Log日志打印,但是想偷懒因此这里介绍部分参数可以通过命令直接查看配置的值。下面就介绍一些使用adb shell settings 等命令获取Android中配置的值。PS:注意红色字体,不同的settings参数获取的方式不同小结用了ge...

史铁生:合欢树

10岁那年,我在一次作文比赛中得了第一。母亲那时候还年轻,急着跟我说她自己,说她小时候的作文作得比我还要好,老师甚至不相信那么好的文章会是她写的。“老师找到家来问,是不是家里的大人帮了忙。我那时可能还不到10岁呢。”我听得扫兴,故意笑:“可能?什么叫‘可能还不到’?”她就解释,我装作根本不在意她的话...

解决java.io.File android.content.Context.getDatabasePath(java.lang.String)

前言首先,这个问题有点神奇。比如,出现问题的原因:new.SQLiteOpenHelper()时,Context不能是Application的Context如果传入Application,会java.io.File android.content.Context.getDatabasePat...

动态代理Proxy.newProxyInstance

前言记录一下Java中的动态代理相关知识,主要是为了Android中Hook技术要用,因此记录一下,方便自己查阅。正文什么是动态代理利用Java的反射技术,在运行时创建一个实现某些给定接口的新类(动态代理类)。代理的是接口(Interfaces),不是类(Class),也不是抽象类。n...

JNI动态注册封装C++版

前言之前JNI一直用C语言写,但发现Android Framework中大都用C++写,为了阅读方便,改为C++。其实C++跟C语言写法一样的,只不过C++更简洁些。正文修改点,举个例子不同点hello.c文件后缀改为hello.cpp,还有就是C++传入的参数更少,看起来更简洁。he...

书单-白岩松《痛并快乐着》

1”是健康,婚姻、事业、金钱就是后面一个又一个“0”;健康这个“1”在的时候,后面的“0”越多,你的人生越丰富;而前面这个健康的“1”一旦不在了,你后面的“0”再多,人生也只是一个“0”。【笔记:生命是革命的本钱】 背靠着大树,自己却并不是大树。【笔记:那就让自己成为大树吧】&nbs...