目录
第一篇:android源码编译(ubuntu16.04 64位)
第二篇:编译补充(关于下载代码和内存不足问题)
第三篇:Android系统编译流程详解
android 编译系统编译过程
- source build/envsetup.sh:初始化编译环境,加载相关命令
- lunch:选择平台编译选项
- make -j8:执行编译(其中-j参数表示指定编译线程数,建议cpu核心数乘2即可)
build/envsetup.sh脚本
由于脚本内容过多,截取部分:
脚本代码依次查找{device, vendor, product}目录下的vendorsetup.sh文件,并分别导入到当前环境中来!
image.png
lunch
lunch的作用:
image.png
等待我们选择编译的平台,这里所谓的平台说白了就是指我们所编译的系统适合运行在什么设备上,并且是user版本还是eng版本,又或者说是debug版本,我们确定版本之后,输入数字按回车就选择好了!
简单介绍下三个版本:
- user版本:
user版本其实就是指可以发放到用户手上的版本了,就比如说我们平时正常的去手机店买手机的时候就是user版本了。 - eng版本:
这个版本是我们平时所说的工程机一般都是用这个版本,有时候这个版本的机子也会发给用户试用。 - userdebug版本:
这个是调试版本,开发人员调试的时候用这个版本即可,当然也可以直接用eng版本。
lunch实现截图:(函数实现文件build/make/envsetup.sh
)
android 编译系统的结构
android的编译系统可以分为三部分:
- build/core: 在这个目录中包含了大量的.mk文件
- 子项目:每个子项目都包含自己的Android.mk,在编译时会被包含进去,而如何编译子项目是由Andorid.mk文件所决定的3
- out/:编译结果输出到该目录下,编译的结果可以是jar包,apk,也可以是二进制
build/core目录节选
image.png比较重要的是其中的
main.mk
文件.
由于比较长,只能截取一部分了:
image.png
网友评论