WEB开发网
开发学院手机开发Android 开发 Android Makefile and build system 分析 阅读

Android Makefile and build system 分析

 2010-05-14 16:57:00 来源:WEB开发网   
核心提示:前言:预计未来一致两年内移动互联网将会有很大的发展,必将孕育很多的机会,Android Makefile and build system 分析,而Google 推出的Android 手机操作系统无疑将是移动互联网中的明星,由于其是开源系统,下图简要介绍了Android build system的配置部分的主要构成及相

前言:预计未来一致两年内移动互联网将会有很大的发展,必将孕育很多的机会,而Google 推出的Android 手机操作系统无疑将是移动互联网中的明星。由于其是开源系统,很有必要对此进行深入研究。

工欲善其事,必先利其器。Makefile无疑是打开系统架构的一扇窗户。但因Android的Makefile (build system)文件众多,架构复杂,分析起来较为困难。本文梳理了build system的大致脉络,希望对build system感兴趣的同学们有所帮助。

1. Android Makefile & build system 概述

Makefile文件用来告诉make命令需要怎么样的去编译和链接程序。在编译时,需要根据编译环境和编译目标选择编译工具,编译参数,以及选择编译安装哪些模块。同时Makefile 指定了构建目标所需的依赖性以及生成规则。 在Android中,主要的Makefile文件存在于build/core/目录下,它的表现形式为多个后缀为mk的文件组成,也称为build system。Android build system 主要有两大部分构成:配置部分,目标构建部分。Build system的主流程文件为build/core/main.mk文件。

Android build system在设计中考虑了如下方面,具有良好的扩展性。

a) 增添子模块编译

b) 多CPU架构 ? ARM/PPC(maybe)/X86(maybe)

c) 多语言编译 ? C/C++/Java

d) 多目标 ? static lib/share lib/execute/Java/Java library

e) 多发布版本

本文也将就围绕这些特性做进一步分析。

2. Build system 配置部分

配置部分主要完成以下几个工作:

a) 基于Android 产品的配置(product config):选择构建安装的运行程序 (user package)

b) 设置target 等相关变量TARGET_ARCH, TARGET_OS, TARGET_BUILD_TYPE, TARGET_PREBUILT_TAG

c) 根据编译环境设置host等相关变量 HOST_OS, HOST_ARCH, HOST_BUILD_TYPE, HOST_PREBUILT_TAG

d) 编译target上运行程序所需的工具链及编译参数设置,如linux-arm-cc,cflag,include目录等。

e) 编译host上运行程序所需的工具链及编译参数设置。

下图简要介绍了Android build system的配置部分的主要构成及相互关系。

多发布版本的支持

Android 会被不同的厂商所采用,他们内置的packages(应用程序)相应也会有差别。AndroidProducts.mk文件即为Android

1 2 3  下一页

Tags:Android Makefile and

编辑录入:coldstar [复制链接] [打 印]
赞助商链接