跳转至

与其他编译系统的对比

在展开 Android 编译系统的细节之前,先让我强调一下它与你可能已知的编译系统有何不同。首先,与大多数基于 make 的编译系统不同,Android 的编译系统不依赖递归 makefile。以 Linux 内核为例,顶层 makefile 会递归调用各子目录的 makefile;而 Android 则不同——有一个脚本会遍历所有目录和子目录,直到找到 Android.mk 文件为止,之后就不再继续向下探索。此外,Android 不使用名为 Makefile 的文件,而是通过 Android.mk 文件来指定如何构建本地的"模块"。

注意:Android 编译系统中的"模块"与内核"模块"完全不是一回事。在 Android 编译系统的语境下,"模块"是指 AOSP 中任何一个需要构建的组件。它可能是一个二进制文件、一个应用包、一个库等,也可能需要为目标或主机构建——但就编译系统而言,它们统一称为"模块"。