2、Linux环境搭建:安装Ubuntu 22.04 LTS、配置国内镜像源、安装必要依赖包

说实话,搞AOSP开发,第一步就是跟Linux打交道。我见过不少新手在Windows上硬折腾,最后编译到一半报错,心态直接崩了。我的建议是——老老实实装个Ubuntu 22.04 LTS,这是目前最稳的选择。

2.1 为什么选Ubuntu 22.04 LTS?

你可能会问:「Ubuntu版本那么多,为什么非得是22.04?」

嗯,这里有个坑。AOSP官方文档推荐的是Ubuntu 18.04,但那已经是老黄历了。我去年用20.04编译Android 14,遇到好几个Python版本兼容问题。后来换成22.04,一路顺畅。

说白了,22.04的软件包够新,同时稳定性也经过了时间检验。我个人习惯是:大版本选LTS,小版本选最新。22.04.3是目前最推荐的。

核心要点:Ubuntu 22.04 LTS + Python 3.10 + OpenJDK 17,这是AOSP编译的黄金组合。

2.2 安装Ubuntu 22.04 LTS

安装过程其实不复杂,但有几个细节要注意。我踩过的坑,你就不用再踩了。

2.2.1 准备工作

  • 磁盘空间:至少250GB,我建议直接给500GB。你想想看,一次完整编译就要吃掉150GB左右,再加上源码下载、中间产物,空间很快就没了。
  • 内存:16GB起步,32GB更舒服。我曾经用8GB内存编译,结果swap分区疯狂读写,硬盘都快冒烟了。
  • CPU:核心越多越好。编译AOSP是纯CPU密集型任务,8核16线程是底线。

2.2.2 安装步骤

  1. 从官网下载Ubuntu 22.04.3 LTS的ISO镜像
  2. 用Rufus或balenaEtcher制作启动U盘
  3. 安装时选择「最小安装」,省掉那些用不上的办公软件
  4. 分区建议:/ 分100GB,/home 分剩余空间,swap给16GB

小技巧:安装时记得勾选「为图形或无线硬件安装第三方软件」。别问我为什么,我第一次装完发现WiFi驱动没装上,折腾了半天。

2.3 配置国内镜像源

这一步太关键了。默认的Ubuntu源在国外,下载速度慢得让人抓狂。我当年第一次编译AOSP,光下载依赖包就等了一个下午。

国内推荐用清华源阿里源。我个人偏爱清华源,稳定且更新及时。

2.3.1 更换apt源

# 备份原源文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 编辑源文件
sudo vim /etc/apt/sources.list

把内容替换成以下清华源配置:

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

然后更新:

sudo apt update
sudo apt upgrade -y

注意:如果你用的是Ubuntu 22.04的其他小版本,把jammy换成对应的版本代号就行。千万别搞错,否则会报404错误。

2.4 安装必要依赖包

好了,系统装好了,源也配好了。接下来就是安装AOSP编译需要的各种工具。这一步看起来琐碎,但漏掉任何一个,编译时都会给你颜色看。

2.4.1 基础工具链

sudo apt install -y git curl python3 python3-pip \
  build-essential flex bison gperf \
  libxml2-utils xsltproc zip unzip \
  libssl-dev libncurses5-dev \
  libgl1-mesa-dev libx11-dev libxext-dev \
  libxrandr-dev libxdamage-dev libxfixes-dev \
  libxxf86vm-dev libdrm-dev libgbm-dev \
  libpulse-dev libasound2-dev libc6-dev-i386 \
  lib32z1 lib32ncurses5-dev lib32stdc++6 \
  openjdk-17-jdk

这一串命令看着长,但别怕。我建议你直接复制粘贴,一行搞定。我在项目中遇到过好几次因为漏装某个包导致编译失败的情况,后来干脆写了个脚本一键安装。

2.4.2 配置Git

Git是AOSP开发的核心工具,一定要配好:

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --global color.ui auto
git config --global core.editor vim

这里有个细节:邮箱最好用Gmail。AOSP的代码审查系统Gerrit对Gmail支持最好,用其他邮箱可能会遇到收不到验证邮件的问题。

2.4.3 安装Repo工具

Repo是Google专门为AOSP开发的代码管理工具,本质上是Git的封装:

# 下载repo
curl -s https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

# 或者用国内镜像
curl -s https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo

# 添加执行权限
chmod a+x ~/bin/repo

# 添加到PATH
echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
source ~/.bashrc

避坑指南:我曾经直接用root用户下载repo,结果后面操作各种权限问题。记住,永远不要用root用户做AOSP开发。创建一个普通用户,把sudo权限加上就行。

2.5 验证环境

装完所有东西后,花两分钟验证一下:

# 检查Python版本
python3 --version
# 输出应为 Python 3.10.x

# 检查Java版本
java -version
# 输出应为 openjdk version "17.0.x"

# 检查Git版本
git --version
# 输出应为 git version 2.34.x

# 检查Repo
repo --version
# 输出应为 repo 2.x

如果所有版本都对得上,恭喜你,环境搭建成功了。

2.6 我的个人建议

最后说几句掏心窝子的话:

  • 别用虚拟机。我见过太多人在虚拟机里编译AOSP,结果编译到一半内存不够直接卡死。有条件就上双系统,或者直接买台Linux工作站。
  • 做好备份。系统装好后,用timeshift做个快照。万一哪天搞崩了,一键恢复,省时省力。
  • 保持耐心。第一次搭建环境可能会遇到各种小问题,这很正常。每个AOSP开发者都是从这一步走过来的。

好了,环境搭好了,下一章我们开始下载AOSP源码。那才是真正的重头戏。