Android编译系统的架构:

分析Android编译系统,你会发现,Android编译系统完成的并不仅仅是对目标(主机)系统二进制文件、java应用程序的编译、链接、打包等,而且还有包括生成各种依赖关系、确保某个模块的修改引起相依赖的文件的重新编译链接,甚至还包括目标文件系统的生成,配置文件的生成等,因此Android编译系统具有支持多架构(linux-x86windowsarm等)、多语言(汇编、CC++Java等)、多目标、多编译方式。这些目标和结构决定其架构也很重要。

Android编译系统集中于build/core下,几个很重要的*.mk文件如下:

main.mk(主控Makefile)

base_rules.mk(对一些Makefile的变量规则化)

config.mk(关于编译参数、编译命令的一些配置)

definations.mk(定义了很多编译系统中用到的宏,相当于函数库)

Makefile(这个Makefile特指build/core下的Makefile,此文件主要控制生成system.img,ramdisk.img,userdata.img,以及recorvery imagesdk等)

Binary.mk(控制如何生成目标文件)

Clear_vars.mk(清除编译系统中用到的临时变量)

Combo/linux-arm.mk(控制如何生成linux-arm二进制文件,包括ARM相关的编译器,编译参数等的设置)

Copy_headers.mk(将头文件拷贝到指定目录)

分散于各个目录下的Android.mk(控制生成局部模块的源码,名称所需头文件路径,依赖库等特殊选项)

Build/envsetup.mk(编译环境初始化,定义一些实用的shell函数,方便编译使用)

以上几个主要的文件,可以按照社会分工打一个比方:

Main.mk是总统,是老大,承担了很多工作。

Makefile是副总统,辅佐老大Main.mk

Base_rules.mk是交警,让不规则的东西,变得规则。

Config.mk是省长,规定了各个人民群众该如何行事

Definations.mk是图书馆管理员

Binary.mk应该属于村长了,规定每个人该如何行事

Clear_vars.mk应该属于保洁公司的工人吧

Combo/linux-arm.mk应该属于社会公民了,他决定自己该如何去做

更多相关文章

  1. Pyqtdeploy Android(安卓)PyQtForAndroid(安卓)编译记录【更新中
  2. android中移植 c/c++程序
  3. android vim编辑器的移植
  4. Android(安卓)Makefile分析
  5. 解决 Android(安卓)在Eclipse 开发中 Class Not Found 的问题
  6. Android(安卓)文件的保存与读取之SDCard(SD卡)存储
  7. Android(安卓)Studio共用Eclipse的Android项目文件
  8. android样式,主题设置心得
  9. Android布局文件中命名空间的解析

随机推荐

  1. Android(安卓)Flutter:Dart语言(布局篇)
  2. Android模块化开发--路由ARouter日常使用
  3. android 入门 001 (界面布局)
  4. YUV420P的格式以及转换为RGB565的代码(And
  5. android CheckBox RadioButton 照片和文
  6. Android(安卓)安全提示 笔记
  7. Android工程Debug证书过期解决方案 -- ec
  8. Windows环境下Android(安卓)Studio系列3
  9. Android(安卓)Studio使用gradle-experime
  10. Android(安卓)数据库框架GreenDao与LiteP