Android 编译和刷机 —— 源码环境搭建
环境配置
下载 Android 源码前,需要主机环境:
- 安装 Git 工具。
- 安装 Python。
- 安装 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
参数的含义如下:
--install
表示向update-alternatives
注册服务名。/usr/bin/python
是注册的最终地址,后面会由它管理这个软链接。python
是服务名。/usr/bin/python2.7
和/usr/bin/python3.10
参数为被管理命令的绝对路径。2
和3
表示优先级,数字越大,优先级越高。
配置完毕后,可以使用 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
。