跳转至

Android 编译和刷机 —— 源码环境搭建

环境配置

下载 Android 源码前,需要主机环境:

  1. 安装 Git 工具。
  2. 安装 Python。
  3. 安装 Repo 工具。

安装 Git 工具

sudo apt install git

安装完成后,配置 Git 工具:

git config --global user.name "your_name"
git config --global user.email "email_address@example.com"

安装 Python

Ubuntu 22.04.03 已经内置了 Python 3,安装的位置在 /usr/bin/python3.x, 可以使用如下的命令检查 Python 是否存在:

python3 --version

在 Android 12 及其以上版本,只需要为 Python 3 创建一个软链接就可以下载代码了:

sudo ln -s /usr/bin/python3 /usr/bin/python

在 Android 12 以下的版本,需要安装 Python 2:

sudo apt install python2-minimal
python2 --version

经查询,python2 的安装路径为 /usr/bin/python2.7。因为系统中安装了多个 Python 版本,需要使用 update-alternatives 来切换版本, update-alternatives 是 Linux 上的一个版本管理工具。

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 3

update-alternatives 参数的含义如下:

  1. --install 表示向 update-alternatives 注册服务名。
  2. /usr/bin/python 是注册的最终地址,后面会由它管理这个软链接。
  3. python 是服务名。
  4. /usr/bin/python2.7/usr/bin/python3.10 参数为被管理命令的绝对路径。
  5. 23 表示优先级,数字越大,优先级越高。

配置完毕后,可以使用 python --version 查看 Python 的版本信息。后续需要切换 Python 版本,可以使用如下的命令:

sudo update-alternatives --config python

安装 Repo 工具

Step 1:创建 bin 文件夹

mkdir ~/bin
PATH=~/bin:$PATH

Step 2:安装 curl

sudo apt install curl

Step 3:下载 Repo 工具,并且确保它可以正常运行

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

如果上述地址下载失败,可以换成清华源镜像:

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo

下载 Android 源码

硬件配置

根据 Android 官网的 硬件要求 的描述,需要至少预留 400GB 的可用磁盘空间(250 GB 用于检出代码 + 150 GB 用于构建代码)。

推荐使用 64 GB RAM。Google 使用 72 核机器和 64 GB RAM 来构建 Android。采用此硬件配置时,一个完整的 Android build 大约需要 40 分钟。 Android 增量 build 大约需要几分钟的时间。相比之下,使用 6 核机器和 64 GB RAM 构建一个完整 build 大约需要 6 个小时。

确认需要下载分支版本

在下载源码前,可以通过 Android 的 官网 查询到源码的标签信息。若 Android 的官网更新不及时的话,可以直接访问 manifest 文件查询到每个分支信息。

国内访问 Android 源码很慢,建议通过清华大学的 AOSP 镜像下载。下载的步骤如下:

Step 1:创建一个目录,存放 Android 源码

mkdir AOSP
cd AOSP

Step 2:设置清华大学的 AOSP 镜像地址

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

Step 3:指定需要下载的分支

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-13.0.0_r43

Step 4:同步 Android 代码

repo sync -c --no-tags

-c 表示只拉取当前分支的代码,--no-tags 表示在下载代码时不需要 tags 信息。由于 Android 的代码非常庞大,在下载过程中要是出现中断或者卡住的情况, 可以使用 Ctrl+Z 的方式停止,然后重新执行 repo sync -c --no-tags