学而实习之 不亦乐乎

Android 源码下载及编译流程

2024-01-03 20:40:43

一、软硬件配置

1、配置

参照官方推荐配置,重点有如下几项:

硬件配置要求

  • 内存至少 16GB,实测建议至少 32G。
  • 磁盘至少 250GB,实测建议至少 512G。

2、软件要求

推荐使用 Ubuntu 18.04 (Bionic Beaver)、 Docker、Linux。

2021年6月22日起,不再支持 Windows 或 MacOS 上构建。

2020年1月1日起,不再支持 python2,请使用 python3。

二、源码下载

1、依赖安装

请使用如下命令安装相关依赖:

# apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip

2、工具安装

# apt-get install curl git python3

3、git配置

请使用如下命令对git进行配置:

# git config --global user.name 'xxx'
# git config --global user.email 'xxx@xxx.com'

4、repo配置

请使用如下命令更新repo并进行配置:

# mkdir ~/bin
PATH=~/bin:$PATH
# curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
# chmod +x ~/bin/repo

5、源码下载

【1】明确下载版本

请通过浏览器访问:https://source.android.google.cn/docs/setup/about/build-numbers?hl=zh-cn#source-code-tags-and-builds,来选取需要的版本。

【2】、替换为清华源

请使用如下命令将源替换为清华源:

# export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

【3】、初始化仓库并指定分支

请使用如下命令初始化仓库并指定分支,此处以android-13.0.0_r7分支为例。

# repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-13.0.0_r7

【4】、同步全部源码

使用如下命令进行源码同步:

# repo sync -c -j8

此处为了加快速度使用了-c参数,表示只同步当前分支,-j8表示使用8个线程今天同步代码,使用多少个线程请根据自己的机器配置自行修改。

代码同步结果如下:

Checking out: 100% (1134/1134), done in 25m36.486s
repo sync has finished successfully.

此时Android13源码已经同步完成。

三、Android源码编译

1、编译环境搭建

使用如下命令安装JDK:

# apt-get install openjdk-11-jdk

执行如下命令安装编译依赖:

# apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

2、全编译

【1】、初始化编译环境

执行如下命令进行编译环境初始化:

# source build/envsetup.sh

或者:

# . build/envsetup.sh

【2】、选择构建目标

执行lunch命令显示如下:

选择需要构建的目标,此处以aosp_arm-eng为例,执行结果如下:

【3】、编译固件

执行如下命令进行固件编译:

# make -j24

会有如下信息输出:

四、常见问题及解决方法

1、libncurses.so.5库找不到问题

执行如下命令:

# sudo apt-get install libncurses

输出如下信息:

 

2、磁盘空间不足

编译过程中出现:

Failed to write file out/butld_error: write out/build_error.tmp: no space left on device

... ...

Error closing trace writer: write out/build.trace.gz no space left on device

此处只能增加系统硬盘。