Make 目标说明 make /make droid
如果在源码树的根目录直接调用“make”命令而不指定任何目标,则会选择默认目标:“droid”(在 main.mk 中定义)。因此,这和执行“make droid”效果是一样的。
droid 目标将编译出整个系统的镜像。从源代码到编译出系统镜像,整个编译过程非常复杂。这个过程并不是在 droid 一个目标中定义的,而是 droid 目标会依赖许多其他的目标,这些目标的互相配合导致了整个系统的编译。
图 6 描述了 droid 目标所依赖的其他目标:
图 6. droid 目标所依赖的其他 Make 目标图 6 中这些目标的说明如表 4 所示:
表 4. droid 所依赖的其他 Make 目标的说明 名称说明apps_only 该目标将编译出当前配置下不包含 user,userdebug,eng 标签(关于标签,请参见后文“添加新的模块”)的应用程序。
droidcore 该目标仅仅是所依赖的几个目标的组合,其本身不做更多的处理。
dist_files 该目标用来拷贝文件到 /out/dist 目录。
files 该目标仅仅是所依赖的几个目标的组合,其本身不做更多的处理。
prebuilt 该目标依赖于 $(ALL_PREBUILT),$(ALL_PREBUILT)的作用就是处理所有已编译好的文件。
$(modules_to_install) modules_to_install 变量包含了当前配置下所有会被安装的模块(一个模块是否会被安装依赖于该产品的配置文件,模块的标签等信息),因此该目标将导致所有会被安装的模块的编译。
$(modules_to_check) 该目标用来确保我们定义的构建模块是没有冗余的。
$(INSTALLED_Android_INFO_TXT_TARGET) 该目标会生成一个关于当前 Build 配置的设备信息的文件,该文件的生成路径是:out/target/product/<product_name>/android-info.txt
systemimage 生成 system.img。
$(INSTALLED_BOOTIMAGE_TARGET) 生成 boot.img。
$(INSTALLED_RECOVERYIMAGE_TARGET) 生成 recovery.img。
$(INSTALLED_USERDATAIMAGE_TARGET) 生成 userdata.img。
$(INSTALLED_CACHEIMAGE_TARGET) 生成 cache.img。
$(INSTALLED_FILES_FILE) 该目标会生成 out/target/product/<product_name>/ installed-files.txt 文件,该文件中内容是当前系统镜像中已经安装的文件列表。
其他目标
Build 系统中包含的其他一些 Make 目标说明如表 5 所示:
表 5. 其他主要 Make 目标 Make 目标说明make clean 执行清理,等同于:rm -rf out/。
make sdk 编译出 Android 的 SDK。
make clean-sdk 清理 SDK 的编译产物。
make update-api 更新 API。在 framework API 改动之后,需要首先执行该命令来更新 API,公开的 API 记录在 frameworks/base/api 目录下。
make dist 执行 Build,并将 MAKECMDGOALS 变量定义的输出文件拷贝到 /out/dist 目录。
make all 编译所有内容,不管当前产品的定义中是否会包含。
make help 帮助信息,显示主要的 make 目标。
make snod 从已经编译出的包快速重建系统镜像。
make libandroid_runtime 编译所有 JNI framework 内容。
makeframework 编译所有 Java framework 内容。
makeservices 编译系统服务和相关内容。
make <local_target> 编译一个指定的模块,local_target 为模块的名称。
make clean-<local_target> 清理一个指定模块的编译结果。
makedump-products 显示所有产品的编译配置信息,例如:产品名,产品支持的地区语言,产品中会包含的模块等信息。
makePRODUCT-xxx-yyy 编译某个指定的产品。
makebootimage 生成 boot.img
makerecoveryimage 生成 recovery.img
makeuserdataimage 生成 userdata.img
makecacheimage 生成 cache.img