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

Android Makefile and build system 分析

 2010-05-14 16:57:00 来源:WEB开发网   
核心提示:build system提供给厂商的接口文件,通过此文件即可定义所需编译和安装的packages(也即应用程序),Android Makefile and build system 分析(2),缺省选项是generic,为了更容易的扩展,通过定义自己的Android.mk文件,再修改上述等变量,Android定义了基本
build system提供给厂商的接口文件。通过此文件即可定义所需编译和安装的packages(也即应用程序)。缺省选项是generic。为了更容易的扩展,Android定义了基本package(core.mk)和通用package(generic.mk),通用package包含基本package。同时Android还实现了一个继承函数(inherit-product)。通过继承通用package,可以很容易的配置所需编译和安装的package。

多CPU架构的扩展

Config.mk文件中会设置combo_target为不同的变量,然后include select.mk文件。在select.mk文件中,会根据OS和CPU架构选择相应的mk文件,在这些相应的mk文件中,又定义了编译目标程序所需的工具链及编译参数。目前从combo目录下看,target上不支持PPC架构。但如果要想支持PPC架构的话,只需在combo目录下创建PPC的mk文件,在其中定义工具链和参数即可。

3. build system 目标构建部分

目标构建部分的主要工作就是选择所需构建的目标,确定它们所需依赖的目标,然后根据规则来构建最终的目标。说起来简单,可是在实际中就需要考虑很多问题了。

a) 作为一个设计优秀的Framework,如何方便的添加子模块?

b) 在Android系统中,有多种编程语言的存在,它们的编译工具各不相同。即使同一种语言,如C语言,也存在host 和target的差别,编译器也不同。如何选择不同的工具进行模块的构建?

c) 在Android系统中,存在不同种类的构建目标:有可执行文件,static library, dynamic library,java library,java。如何构建这些不同的目标?

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

在main.mk中,非常关键的一个步骤就是找到TOP目录下所有Android.mk文件,并include 它们。在Include的过程中,就会确定子模块的构建目标,类型,和规则。

Android.mk就是build system提供给子模块的借口文件。Android.mk有下面几个关键词:

LOCAL_SRC_FILES ? 指定模块的源文件

LOCAL_MODULE ? 指定所需构建的目标名

include 构建类型对应的文件 ? 例如想构建在target上运行的可执行文件,那就执行语句include $(BUILD_EXECUTABLE)。通过此语句可有如下结果:a) 指定构建目标的类型 b)确定构建此类型所需的工具及参数。

通过定义自己的Android.mk文件,再修改上述等变量,即可轻松的把自身模块放入至build system中。

Tags:Android Makefile and

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