4. 初始化AOSP工作目录

任务目标

在开始AOSP源码编译前,需要先创建并初始化一个用于存放源码的工作目录。本案例将完成:创建标准目录结构、安装并配置repo工具、初始化repo客户端以拉取AOSP manifest清单。完成本案例后,你将拥有一个可随时执行repo sync同步源码的工作环境。

环境准备

本案例基于 Ubuntu 20.04+(或Debian系)环境,需要已安装git与curl。AOSP源码体积庞大(约100GB+),请确保磁盘剩余空间充足,并建议使用大小写敏感的文件系统(Linux默认即满足)。

实现步骤与代码

1. 创建标准目录结构

AOSP官方推荐将源码存放于~/aosp或/opt/aosp下。此处以~/aosp为例:

mkdir -p ~/aosp
cd ~/aosp

2. 安装repo工具

repo是Google基于Python开发的仓库管理工具,用于管理AOSP的数百个Git仓库。安装到用户目录即可,无需root权限:

# 下载repo脚本(使用国内镜像加速)
curl -sSL 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo' -o ~/bin/repo
# 若~/bin不存在则先创建
mkdir -p ~/bin
# 赋予执行权限
chmod +x ~/bin/repo
# 将~/bin加入PATH(写入~/.bashrc永久生效)
echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
source ~/.bashrc

验证安装:

repo --version

预期输出包含repo版本号及Python版本信息。

3. 初始化repo客户端

在~/aosp目录下执行初始化命令,指定AOSP的manifest仓库。此处使用清华AOSP镜像(国内访问更快):

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

参数说明:

  • -u:指定manifest仓库的Git地址
  • -b:指定分支或标签,此处使用Android 13的稳定版tag

初始化过程中,repo会下载manifest仓库并创建.repo目录。若网络不稳定,可添加--depth=1参数做浅克隆以加速(注意:浅克隆后续同步时可能需额外参数)。

4. 验证初始化结果

初始化完成后,检查关键文件是否存在:

ls -la ~/aosp/.repo/manifests/
cat ~/aosp/.repo/manifest.xml

判定标准:

  • .repo/manifests/目录存在且包含default.xml等清单文件
  • manifest.xml为指向manifests/default.xml的符号链接
  • 执行repo info能显示当前manifest分支信息(输出中包含Manifest branch: android-13.0.0_r3)

常见问题

  • curl下载repo失败:可尝试sudo apt install repo(Ubuntu 22.04+仓库自带),或从https://gerrit.googlesource.com/git-repo直接下载。
  • Python版本过低:repo需要Python 3.6+,检查python3 --version,若版本过低请先升级。
  • 初始化卡住或超时:多为网络问题,可切换镜像源(如中科大https://mirrors.ustc.edu.cn/aosp/platform/manifest),或设置git config --global http.postBuffer 524288000后重试。

至此,AOSP工作目录初始化完成。下一步即可执行repo sync同步全部源码(该步骤耗时数小时,不在本案例范围内)。