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 安装步骤
- 从官网下载Ubuntu 22.04.3 LTS的ISO镜像
- 用Rufus或balenaEtcher制作启动U盘
- 安装时选择「最小安装」,省掉那些用不上的办公软件
- 分区建议:
/分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源码。那才是真正的重头戏。