本部分介绍了如何设置本地工作环境来构建 Android 源文件。您必须使用 Linux;不支持在 MacOS 或 Windows 上进行构建。也请注意对 /usr/bin/python
二进制文件的重要更改。
如需简要了解整个代码审核和代码更新流程,请参阅补丁的生命周期。
选择分支
针对构建环境的某些要求是由您打算编译的源代码的版本决定的。如需查看可用分支的完整列表,请参阅 build 号。您还可以选择下载并构建最新的源代码(称为 master
)。如果您选择这么做,请在初始化代码库时直接忽略分支规范。
选择分支后,请按照下面的相应说明来设置构建环境。
设置 Linux 构建环境
以下说明适用于所有分支(包括 master
)。
我们会定期在 Ubuntu LTS (14.04) 和 Debian 测试版本中对 Android 构建系统进行内部测试。其他大多数分发版本都应该具有所需的构建工具。
如果是 Gingerbread (2.3.x) 及更高版本(包括 master
分支),需要使用 64 位环境。如果是较低的版本,则可以在 32 位系统中进行编译。
安装所需的软件包(Ubuntu 18.04 及更高版本)
您需要 64 位版本的 Ubuntu。
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
安装所需的软件包 (Ubuntu 14.04)
您需要 64 位版本的 Ubuntu(建议使用 Ubuntu 14.04)。
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip
安装所需的软件包 (Ubuntu 12.04)
您可以使用 Ubuntu 12.04 来构建较低版本的 Android。master
或最近推出的一些版本不支持 Ubuntu 12.04。
sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
安装所需的软件包 (Ubuntu 10.04-11.10)
不再支持在 Ubuntu 10.04-11.10 中进行构建,但它们仍可用来构建较低版本的 AOSP。
sudo apt-get install git gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils xsltproc
在 Ubuntu 10.10 中,请运行以下命令:
sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
在 Ubuntu 11.10 中,请运行以下命令:
sudo apt-get install libx11-dev:i386
配置 USB 访问权限
按照说明设置用于开发的设备,以安装适用于所有 Android 设备且由社区维护的默认 udev
规则集。
使用单独的输出目录
默认情况下,每次构建的输出都会存储在相应源代码树的 out/
子目录下。您可以通过导出 OUT_DIR
环境变量来替换此设置。例如:
export OUT_DIR=out_mytarget
这会使构建输出存储在源代码树的 out_mytarget/
子目录中。使用相同的源代码树为多个目标进行构建时,建议为每个目标使用单独的 OUT_DIR
。
在一些拥有多个存储设备的计算机上,如果将源文件和输出存储在单独的存储卷中,构建速度会更快。若要进一步提高构建速度,可以将输出存储在已针对速度(而非崩溃稳定性)进行优化的文件系统中,这是因为在文件系统损坏时可以重新生成所有文件。
如需进行这项设置,请导出 OUT_DIR_COMMON_BASE
变量,使其指向将存储输出目录的位置。
export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>
对于每个单独的源代码树,其输出目录都将以其存放目录命名。例如,如果您有源代码树 /source/master1
和 /source/master2
,且 OUT_DIR_COMMON_BASE
设置为 /output
,则输出目录为 /output/master1
和 /output/master2
。
避免将多个源代码树存储在具有相同名称的目录下,否则会导致输出目录共享终止,并且会出现不可预知的结果。仅 Jelly Bean (4.1) 及更高版本(包括 master
分支)支持这种做法。
下一篇:下载源代码
构建环境已准备就绪!请继续阅读下载源代码一文。