跳至主要內容

Android系统编译说明(AOSP)


Android系统编译说明(AOSP)

前面我们已经去编译了android系统,只是告诉了同学们步骤,但是没有给大家说明一下每个步骤里的参数是什么意思。

相关文章

AOSP-Android系统定制下载系统源码open in new window

使用虚拟机VM,Ubuntu 18.04.2 LTS编译android系统7.1遇到的问题open in new window

接下来我们回顾一下之前的编译过程,并再了解五相关的命令。

source build/envsetup.sh

source build/envsetup.sh

这个指令什么意思呢?

souce envsetup.sh就是把envsetup.sh里的命令载到当前的bash中,可以直接调用里面的命令。

env就是环境的意思,setup可以理解为设置,这个文件加载可以理解为编译准备

比如说里面有launch指令,有mm指令,有make指令....

如果你没有source的话,这些指令就不有。

加载各产品进来

图片描述
图片描述

我们可以看到,这里面我们source以后,加载了这么多产品进来

有华为的,有google的,有htc的,有摩托罗拉的...

这些产品呢,都在device下,也就是设备。

一般来说:device/公司名称/产品型号/vendorsetup.sh

有了这些知识,我们后面是不是可以定制自己公司的系统了!

后面我们就着手去添加一个属于我们的产品。

lunch 产品名

lunch 这个命令是从哪里来的呢?

其实谅是从我们前面的source 的 envsetup.sh里来的

相关的命令我们可以看这里

图片描述
图片描述
图片描述
图片描述

也可以lunch回车

列出来的产品就前面我们加载的产品

图片描述
图片描述

lunch后如图:

图片描述
图片描述

这些版本从哪 里来的呢?

就是从我们前面载入的各种device里定义的

比如说我们第一个/device/asus/fugu/vendorsetup.sh

里定义了这些内容

add_lunch_combo full_fugu-userdebug
add_lunch_combo aosp_fugu-userdebug

就是添加full_fugu-userdebug和aosp_fugu-userdebug到列表里,lunch的时候会遍历

知道 这些,我们后面自定义自己的产品,就知道这个步骤的作用了。

make -j40

make -j16

make 就是构建,可以理解根据make file编译内容了。-j是job,推荐使用cpu的线程数*4,比如说我的CPU是16核,32线程那么我就可以使用make -j128 全功率去编译。

在android源码里,make file,也就是make文件包括三大分

  • 在build/core下的mk
  • 在device目录下的各种mk
  • 以及各app/jar/aar模块单独的mk

另外,除了make以外,还要留意一下mm命令和mmm命令,这个命令也挺好用的。

我们可以单独编译某些模块

然后通过

make snod

生成新的镜像即可刷机

out输出

当我们编译完系统以后,所编译的内容,包括结果,中间文件都会放在out目录下

  • /out/host/ 这个目录包含了针对主机的 Android 开发工具的产物。即 SDK 中的各种工具,例如:emulator,adb,aapt 等。

  • /out/target/common/ 该目录下包含了针对设备的共通的编译产物,主要是 Java 应用代码和 Java 库,有时候我们称为中间文件。

  • /out/target/product/<product_name>/ 包含了针对特定设备的编译结果以及平台相关的 C/C++ 库和二进制文件。

镜像文件

我们在out/target/product/<产品名称>/目录下可以找到这些产出的镜像,用于刷机

  • system.img 包含了 Android OS 的系统文件、库、可执行文件以及预置的应用程序,将被挂载为根分区
  • ramdisk.img 在启动时将被 Linux 内核挂载为只读分区,它包含了 /init 文件和一些配置文件。它用来挂载其他系统镜像并启动 init 进程
  • userdata.img 将被挂载为 /data,包含了应用程序相关的数据以及和用户相关的数据
  • boot.img Android系统启动下的Linux内核文件
  • xxx.bin Preloader,在Android系统启动前的引导程序
  • lk.bin 引导程序里面的轻量级操作系统
  • recovery.img 恢复模式镜像

好啦,先到这里,我们后面再去创建属于自己公司的产品,跟华为,htc,google这些一样。