Android系统编译
简介
Android系统源码将Makefile
划分成一个个Makefile
片段,通过Makefile
的include
指令将这些片段组装成一个Makefile,因此Android.mk
编译脚本其实是整个Android编译系统的一个Makefile
片段,编译时编译系统会遍历每个目录下的Android.mk
文件。
搭建编译环境
sudo apt-get install u-boot-tools
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev lib32ncurses5 lib32z1 x11proto-core-dev libx11-dev lib32z1-dev
sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip lib32z1 lib32ncurses5 lib32bz2-1.0
sudo apt-get install libxml2-utils
sudo apt-get install subversion openssh-client openssh-server samba git-core git-gui vim
sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libswitch-perl
sudo apt-get install rar unrar
sudo apt-get install gawk
sudo apt-get install bc
系统编译命令
- source build/envsetup.sh
- 此命令会将vendor和device目录中厂商指定的envsetup.sh加载到当前shell中,获取厂商提供的产品配置信息。脚本文件build/envsetup.sh提供编译所需的重要命令用于编译Android源码。build/envsetup.sh脚本中的函数
add_lunch_combo会被多次调用,用来添加Android编译选项。
- lunch
- 用于初始化编译环境,指定目标产品类型和编译类型。第二件事是通过make命令执行build/core/config.mk脚本,并且加载另一个脚本build/core/dumpvar.mk来打印出当前的编译环境配置信息。
- m
- 相当于make命令
- mm和mmm
- 用于模块编译
- 查看编译