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文件的理解》
目前就这些吧,后续继续整理。
© 版权声明