第二章:Android的编译环境--build系统

2.0 build简介

  • Android的build系统基于GNU Make 和shell 构建的一套编译环境。这套系统定义了大量的变量和函数,无论编写一个产品的配置文件还是一个模块的Android.mk文件,都不用直接和GNU Make打交道,只需要理解Android提供的编译变量和函数,就能够方便的将我们开发的模块加入到Android的build体系中。
  • Android系统build分类:
    1、build/core 目录下的文件,这是Android Build的系统框架核心;
    2、device目录下的文件,存放的是具体的产品配置文件;
    3、各个模块的编译文件:Android.mk,位于模块的原文件目录下。

2.1 Android Build系统核心

  • Android Build系统核心在目录buil/core,这个目录中有mk文件、shell脚本和per脚本,他们构成Android Build系统的基础和架构。
  • 编译Android系统常用命令:
$source build/envsetup.sh
$lunch
$make

2.1.1 编译环境的建立

1. envsetup.sh 文件的作用

执行Android系统的编译,必须先执行envsetup.sh脚本,这个脚本会建立Android的编译环境。其具体执行的是建立shell命令以及调用add_lunch_combo命令,这个命令的将调用该命令的所传递的参数存放到一个全局的数组变量LUNCH_MENU_CHOICES中。执行lunch时打印的正是这个数组的内容。
envsetup.sh脚本中定义的常用shell命令:

命令 说明
lunch 指定当前编译的产品
croot 快速切换到源码的根目录,方便开始编译
m 编译整个源码,但不用讲当前的目录切换到源码的根目录
mm 编译当前目录下的所有模块,但是不编译他们的依赖项
cgrep 对系统中所有的C/C++文件执行grep命令
sgrep 对系统中所有的源文件执行grep命令

2 lunch命令的功能

lunch命令如果没有参数,系统会打印出产品的列表供选择。lunch的参数格式:

<product_name>-<build_variant>
posted @ 2016-05-14 16:35  仲从建  阅读(606)  评论(0编辑  收藏  举报