android源码编译

安卓官方提供的三步编译方法如下:

引入安卓shell环境配置: . build/envsetup.sh
设置编译选项,以T1项目为例, lunch msm8974sfo_lte-userdebug 或 lunch msm8974sfo-userdebug
编译: make、mm、mma。其中:
make做安卓全局编译,它会扫描并读取所有Android.mk,确定所有依赖关系,最后编译出boot.img、system.img等安卓标准文件。
make可以加一些参数,比如-jN,以N个线程进行并行编译,以加快编译速度。你可以试试不同的N值,一般以你的CPU核数*1~2是比较合理的。取太 小的值会使编译变慢,取太大的值会使系统变得剧慢,并且也会使编译变慢(系统大部分时间用于进程切换,而不是真正的工作进展)。

还可以给make指定其它编译目标(make targets),比如bootimage,这样的话就可以只编译boot.img。

mm做当前目录编译,并且不读取所有Android.mk,所以其编译速度是非常快的。但前提是你已经做过完整编译(或者至少当前目录的所有依赖都已经编译过——见下一条mma命令)。
mma做当前目录编译,并读取所有Android.mk,并且编译当前目录下的make targets的所有依赖。
大部分时候,建议使用mm。第一次编译,推荐使用mma。实在没办法的情况下,才使用make做全局编译。因为安卓全局编译实在是太费时间了。

mma的工作原理是解析出当前目录下的make targets,然后调用make并传入相应的make targets。

mm的工作原理是解析出当前目录下的make targets,然后调用make并传入相应的make targets,并且设置 ONE_SHOT_MAKEFILE= M M 是当前目录下的 Android.mk 在代码树中的路径(就是因为这个变量的存在,使安卓编译系统不再查找并读取其他Android.mk)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值