Android的编译

Android编译输出out目录结构分析

Android编译完成之后,将会在根目录下生成一个out文件夹,所有生成的内容均放在这个文件夹中。

out/
  |--host //主机(x86)生成的工具
  |--target //目标机运行的内容
  |  |--product //产品的内容
  |  |  |--generic // 存放所有以img结尾的映像文件,其中ramdisk.img是根文件系统映像,system.img是主要文件系统的映像,userdata.img是数据内容映像。
  |  |  |  |--system // 主要的文件系统
  |  |  |  |--data // 存放数据的文件系统
  |  |  |  |--obj
  |  |  |  |  |--APPS // 包含可各种JAVA应用,这与common/APPS对应,但是已经打成了APK包。
  |  |  |  |  |--SHARED_LIBRARIES // 存放所有的动态库
  |  |  |  |  |--STATIC_LIBRARIES // 存放所有的静态库
  |  |--common //通用的内容
  |  |  |--APPS // 包含了JAVA应用程序生成的目标,每个应用程序对应其中的一个子目录,将结合每个应用程序的原始文件生成Android应用程序的APK包。
  |  |  |--JAVA_LIBRARIES // 包含了JAVA的库,每个库对应其中的一个子目录。


$source .build/envsetup.sh有什么用?

多出一些命令:
-croot: Changes directory to the top of the tree.
- m: Makes from the top of the tree.
- mm: Builds all of themodules in the current directory.
- mmm: Builds all of themodules in the supplied directories.
- cgrep: Greps on alllocal C/C++ files.
- jgrep: Greps on all local Javafiles.
- resgrep: Greps on all local res/*.xml files.
-godir: Go to the directory containing a file.


编译文件分类

1)总体配置类

主要用来设定相应的通用编译选项:

config文件

说明

build/core/config.mk

Config文件的概括性说明

build/core/envsetup.mk

generate目录构成等配置

build/target/product

产品相关配置

build/target/board

硬件相关的配置

build/core/combo

编译选项配置

config.mk里面定义了各个module编译所需要使用的Host工具以及如何来编译各个模块。

envsetup.mk会读取由envsetup.sh写入环境变量中的一些变量,来配置编译过程中的输出目录。

product针对芯片配置来定义产品的配置,主要是APK方面的配置,比如哪些APK会包含在哪个product中,哪些APK在当前product中是不提供的。

board主要是涉及到硬件芯片的配置,比如是否提供硬件的某些功能,或者芯片支持浮点运算等等。

combo里面主要定义了各种HostTarget结合的编译器和编译选项。

2)单个模块的编译

本地模块的Makefile文件就是Android.mk文件Android编译的时候会通过下面的函数来遍历所有子目录中的Android.mk,一旦找到就不会再往子目录继续寻找

subdir_makefiles+= \

3)系统生成类

主要指build/core/Makefile文件,这个文件定义了生成各种img的方式,包括ramdisk.img,urerdata.img, system.img, recovery.img等。

所有的Makefile都通过build/core/main.mk组织在一起,它定义了一个默认goalsdroid,当我们在top目录下敲”make“实际上就等同于我们执行”make droid“

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值