上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.3.4 编译Android结果
Android系统编译完成的结果全部在其根目录的out目录中,原始的各个工程不会改动。默认情况下编译的是名称为generic的产品,表示通用的产品。
Android编译的结果包含以下的内容:
主机工具和其依赖的内容(out/host/)
目标机程序(out/target/)
目标机映像文件(out/target/product/{产品名称})
out目录的结构如下所示(带有[]表示是目录):
out/ |-- host [ 主机内容 ] | |-- common [ 主机的通用内容 ] | | `-- obj | `-- linux-x86 [ 编译所生成的主机Linux上运行的工具 ] | |-- bin | |-- framework | |-- lib | `-- obj `-- target [ 目标机内容 ] |-- common [ 目标机的通用内容 ] | |-- R | |-- docs | `-- obj `-- product [ 目标机的产品目录 ] `-- generic
其中out/target/product目录是目标产品的目录,在默认的情况下使用generic作为目标产品的名称,目录结构如下所示(带有[]表示是目录):
out/target/product/generic/ |-- android-info.txt |-- clean_steps.mk |-- data [ 数据目录 ] |-- installed-files.txt |-- obj [ 中间目标文件目录 ] | |-- APPS [ Java应用程序包 ] | |-- ETC [ 运行时配置文件 ] | |-- EXECUTABLES [ 可执行程序 ] | |-- KEYCHARS | |-- NOTICE.html | |-- NOTICE.html.gz | |-- NOTICE_FILES | |-- PACKAGING | |-- SHARED_LIBRARIES [ 动态库(共享库)] | |-- STATIC_LIBRARIES [ 静态库(归档文件)] | |-- include | `-- lib |-- previous_build_config.mk |-- ramdisk.img 根文件系统映像 |-- root [ 根文件系统目录 ] |-- symbols [ 符号的目录 ] |-- system [ 主文件系统目录 ] |-- system.img 主文件系统映像 |-- userdata-qemu.img QEMU的数据映像 `-- userdata.img 数据映像
其中root、system、data这3个目录分别是目标根文件系统、主文件系统和数据文件系统的目录,后缀名为.img的文件分别是它们所对应的映像文件。目录obj中的内容是目标机的各个目标:EXECUTABLES为可执行程序,SHARED_LIBRARIES为动态库, STATIC_LIBRARIES为静态库,APPS为Android中的应用程序包(*.apk)。