Android framwork 之Android makefile编写
来源:互联网 发布:淘宝卖家怎么上图片 编辑:程序博客网 时间:2024/06/05 08:45
Android build system是一个非常庞大的系统,要编译android工程、修改或新增Android模块都需要对这个编译系统有一定的了解。但是由于它实在是太庞大了,大家往往是不知道从哪里切入进去,对Android的编译系统进行一个系统的学习。
二、Rild Android.mk初探
Rild 的Android.mk比较简单,去掉的无用代码后,如下面所示:
# Copyright 2006 The Android Open Source Project# XXX using libutils for simulator build only...#LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= \ reference-ril.c \ atchannel.c \ misc.c \ at_tok.cLOCAL_SHARED_LIBRARIES := \ liblog libcutils libutils libril librilutils# for asprinfLOCAL_CFLAGS := -D_GNU_SOURCELOCAL_C_INCLUDES := $(KERNEL_HEADERS) #build executable LOCAL_SHARED_LIBRARIES += \ libril LOCAL_MODULE:= reference-ril include $(BUILD_EXECUTABLE)endif
三、 Android.mk基本组成
- LOCAL_PATH 定义了当前模块的相对路径,必须出现在所有的编译模块之前
- 每个编译模块由include $(CLEAR_VARS) 开始,由include $(BUILD_XXX) 结束
- include $(CLEAR_VARS) 是一个编译模块的开始,它会清空除LOCAL_PATH之外的所有LOCA_XXX变量
- include $(BUILD_XXX) 描述了编译目标
- LOCAL_SRC_FILES 定义了本模块编译使用的源文件,采用的是基于LOCAL_PATH的相对路径
- LOCAL_MODULE 定义了本模块的模块名
编译acp还需要了几个可选的变量:
- LOCAL_STATIC_LIBRARIES 表示编译本模块时需要链接的静态库
- LOCAL_C_INCLUDES 表示了本模块需要引用的include文件
- LOCAL_ACP_UNAVAILABLE 表示是否支持acp,如果支持acp,则使用acp进行拷贝,否则使用linux cp拷贝,本模块编译acp,当然是不支持acp了
四、编译目标
上面我们用到include $(CLEAR_VARS)和include $(BUILD_HOST_EXECUTABLE),那么他们是在哪里定义的呢?除了BUILD_HOST_EXECUTABLE还有哪些BUILD_XXX目标呢?
它们的定义位于build/core/config.mk文件,当然config.mk文件定义的编译目标也很多,下面列举几个常用的目标:
编译目标说明BUILD_HOST_STATIC_LIBRARY主机上的静态库BUILD_HOST_SHARED_LIBRARY主机上的动态库BUILD_HOST_EXECUTABLE主机上的可执行文件BUILD_STATIC_LIBRARY目标设备上的静态库BUILD_SHARED_LIBRARY目标设备上的动态库BUILD_EXECUTABLE目标设备上的可执行文件BUILD_JAVA_LIBRARYJAVA库BUILD_STATIC_JAVA_LIBRARY静态JAVA库BUILD_HOST_JAVA_LIBRARY主机上的JAVA库BUILD_PACKAGEAPK程序
具体的每一个目标,等我们遇到的时候我们再详细进行讲解。
来源:http://nfer-zhuang.iteye.com/blog/1752368
阅读全文
0 0
- Android framwork 之Android makefile编写
- android framwork 分析之binder
- Android Makefile 编写总结
- Android中Makefile编写
- Android makefile编写基础
- google android volley framwork
- linux/android sdcard framwork
- Android Framwork Android Servers 解析
- Android framwork 分析之智能指针LightRefBase ,sp,wp,RefBase
- Android源码剖析之Framwork层后记篇
- android-google Volley framwork(2)
- Android Framwork Develop 经验汇总
- Android.mk 浅析 模块编译Makefile编写
- Android 的NDK的Makefile编写
- Android.mk 浅析 模块编译Makefile编写
- Android.mk 浅析 模块编译Makefile编写
- Android.mk 浅析 模块编译Makefile编写
- Android.mk 浅析 模块编译Makefile编写
- 砖垛之RecyclerView
- jeesite集成swagger2
- checkstyle auto-fix by python
- LRU缓存介绍与实现 (Java)
- How to create a maven repository for your github project step by step
- Android framwork 之Android makefile编写
- jstl标签详解
- mybatis 详解(九)------ 一级缓存、二级缓存
- [My SQL] SQL聚集函数
- swift之UITableView用法详解
- C#基础之冒泡排序
- python的类变量与实例变量以及__dict__属性
- Loadrunner 判断事务是否成功的几个方法
- Dagger2使用笔记