Android.mk详解
来源:互联网 发布:礼仪卡片制作软件 编辑:程序博客网 时间:2024/06/04 22:22
简介
Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名、引用的头文件目录、需要编译的.c/.cpp文件和.a静态库文件等。
这里使用google原生6.0的代码作为详解
/packages/apps/Settings/Android.mk
//编译一个依赖于静态Java库(static.jar)的应用程序1LOCAL_PATH:= $(call my-dir) //编译一个依赖于静态Java库(static.jar)的应用程序2include $(CLEAR_VARS) //开始34LOCAL_JAVA_LIBRARIES := bouncycastle conscrypt telephony-common ims-common5LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 android-support-v13 jsr30567LOCAL_MODULE_TAGS := optional //指该模块在所有版本下都编译8// :=是赋值的意思9LOCAL_SRC_FILES := \ //编译的源代码文件列表 添加所有的java源文件10 $(call all-java-files-under, src) \11 src/com/android/settings/EventLogTags.logtags1213LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res1415LOCAL_PACKAGE_NAME := Settings //表示APK包的名称,模块名称16LOCAL_CERTIFICATE := platform //签名认证17LOCAL_PRIVILEGED_MODULE := true1819LOCAL_PROGUARD_FLAG_FILES := proguard.flags2021ifneq ($(INCREMENTAL_BUILDS),)22 LOCAL_PROGUARD_ENABLED := disabled23 LOCAL_JACK_ENABLED := incremental24endif2526include frameworks/opt/setupwizard/navigationbar/common.mk27include frameworks/opt/setupwizard/library/common.mk28include frameworks/base/packages/SettingsLib/common.mk2930include $(BUILD_PACKAGE) //结束3132# Use the following include to make our test apk.33ifeq (,$(ONE_SHOT_MAKEFILE))34include $(call all-makefiles-under,$(LOCAL_PATH))35endif36
*详细解析
*
(1)LOCAL_PATH := $(call my-dir)
每个Android.mk文件必须以定义LOCAL_PATH为开始。它用于在开发tree中查找源文件。宏my-dir 则由Build System提供。返回包含Android.mk的目录路径。
(2)include $(CLEAR_VARS)
CLEAR_VARS 变量由Build System提供。并指向一个指定的GNU Makefile,由它负责清理很多LOCAL_xxx.
例如:LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES等等。但不清理LOCAL_PATH.
这个清理动作是必须的,因为所有的编译控制文件由同一个GNU Make解析和执行,其变量是全局的。所以清理后才能避免相互影响。
(3)LOCAL_JAVA_LIBRARIES :=xxx
表示需要依赖的共享jar。
(4)LOCAL_STATIC_JAVA_LIBRARIES :=yyy
依赖的静态jar包(jar包是使用 include $(BUILD_STATIC_JAVA_LIBRARY)生成的。)
(5)LOCAL_SRC_FILES :=
Build all java files in the java subdirectory
(6)LOCAL_PACKAGE_NAME := Settings
对这个模块必须定义,名字必须唯一且不包含空格。
Build System会自动添加适当的前缀和后缀。例如,foo,要产生动态库,则生成libfoo.so. 但请注意:如果模块名被定为:libfoo.则生成libfoo.so. 不再加前缀。
- [Android]Android.mk 详解
- Android.mk详解
- android.mk详解
- Android.mk文件详解
- Android.mk详解
- Android.mk 文件详解
- Android.mk详解【转载】
- Android.mk详解
- android.mk 详解
- Android.mk文件详解
- android.mk语法详解
- android.mk 详解
- Android.mk 实例详解
- android.mk详解
- android.mk 详解
- android.mk 详解
- Android.mk文件详解
- Android.mk详解
- java5 CountDownLatch线程同步工具类
- Android开发笔记(九十四)图片的基本加工
- 标准clearfix 代码
- 百度登录算法分析和实现(下 - 实现篇)
- poj2685——Numeral System新进制系统
- Android.mk详解
- 关于文件上传踩过的坑multipart/form-data
- [Sencha ExtJS] 异步 JavaScript: Promises
- 一个稍微复杂点的hive sql
- 引导页_视差显示
- button贴图,点击事件带参数和不带参数连接
- 五一的任务
- mac的apache配置
- [iOS]修改UILabel的行间距/段间距/缩进