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文件的理解》
目前就这些吧,后续继续整理。
历史上的今天
暂无评论...
随机推荐
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...