理解 Android Build 系统(4)

Make 目标说明 make /make droid

如果在源码树的根目录直接调用“make”命令而不指定任何目标,则会选择默认目标:“droid”(在 main.mk 中定义)。因此,这和执行“make droid”效果是一样的。

droid 目标将编译出整个系统的镜像。从源代码到编译出系统镜像,整个编译过程非常复杂。这个过程并不是在 droid 一个目标中定义的,而是 droid 目标会依赖许多其他的目标,这些目标的互相配合导致了整个系统的编译。

图 6 描述了 droid 目标所依赖的其他目标:

图 6. droid 目标所依赖的其他 Make 目标

图 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  

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/15057.html