开发环境准备:Linux系统安装与硬件配置
做AOSP编译,说白了就是一场硬件与软件的协同作战。我见过太多人卡在第一步——系统没装对,硬盘不够用,编译到一半直接崩掉。今天咱们就把这些坑一个个填平。
硬件配置要求
先聊聊硬件。AOSP编译不是闹着玩的,它是个实打实的资源消耗大户。我最早用一台4核8G的笔记本编译Android 8,结果呢?编译一次花了6个多小时,中间还经常因为内存不足直接OOM(内存溢出)挂掉。那叫一个崩溃。
所以,硬件配置我建议这样选:
| 硬件项 | 最低配置 | 推荐配置 | 我的经验 |
|---|---|---|---|
| CPU | 4核 | 8核以上 | 核心数越多,并行编译越快。我用的16核机器,全量编译大概40分钟 |
| 内存 | 16GB | 32GB或更高 | 16GB编译Android 13会非常吃力,swap狂飙。32GB是舒适区 |
| 磁盘 | 200GB SSD | 500GB以上 NVMe SSD | 机械硬盘?别想了。AOSP源码加编译产物轻松吃掉300GB+ |
| 网络 | 10Mbps | 100Mbps | 首次下载源码约30GB,网速慢的话等一天都有可能 |
Linux系统安装(Ubuntu推荐)
为什么推荐Ubuntu?说白了,Google官方文档里用的就是Ubuntu LTS版本。你想想看,AOSP的构建系统、工具链、依赖库,都是在Ubuntu上测试通过的。用其他发行版当然也行,但你可能要花大量时间去解决依赖问题。
我个人习惯用 Ubuntu 22.04 LTS。为什么是这个版本?因为它的glibc、gcc、python版本跟AOSP官方要求最匹配。我曾经试过Ubuntu 20.04编译Android 14,结果因为python版本太低,折腾了半天才搞定。
安装步骤简述
- 下载ISO镜像:去Ubuntu官网下载22.04 LTS桌面版
- 制作启动盘:用Rufus(Windows)或dd命令(Linux)写入U盘
- 安装过程:选择「清除整个磁盘并安装Ubuntu」——如果你打算专机专用的话
- 设置用户:用户名建议用英文,不要带空格。我见过有人用中文用户名,结果编译脚本路径解析出错
磁盘分区建议
磁盘分区这块,很多人不重视。嗯,这里要注意——分区没规划好,后面有你哭的。
AOSP编译过程中,会产生大量临时文件。默认情况下,这些文件会放在 /tmp 目录。如果 /tmp 空间不够,编译到一半就会报错。我遇到过最惨的一次,编译了3个小时,最后因为磁盘满了直接失败,所有进度白费。
我的分区方案
| 挂载点 | 大小 | 文件系统 | 说明 |
|---|---|---|---|
| / | 50GB | ext4 | 系统根目录,够用就行 |
| /home | 剩余全部 | ext4 | 源码和编译产物都放这里 |
| /tmp | 20-30GB | ext4 | 单独分区,避免临时文件撑爆根目录 |
| swap | 16-32GB | swap | 内存不够时保命用的。我设了32GB |
为什么 /home 要分这么大?因为AOSP源码下载后大概30GB,编译一次产生的out目录又要吃掉100-200GB。如果你同时维护多个分支,那空间需求更大。我自己的机器上,/home 分了1TB,现在用了快700GB。
核心建议:如果你只有一块500GB的SSD,那就只分 / 和 /home 两个区。/ 给50GB,剩下的全给 /home。swap可以用swap文件代替,不用单独分区。
swap文件设置方法
如果你不想单独分swap分区,可以用swap文件。我个人更推荐这种方式,灵活多了。
# 创建一个32GB的swap文件
sudo fallocate -l 32G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 永久生效,写入/etc/fstab
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
/tmp 分区上!/tmp 重启后会被清空,你的swap文件就没了。放在 / 或者 /home 下都行。
避坑指南
最后分享几个我踩过的坑:
- 文件系统大小写敏感:AOSP要求文件系统区分大小写。macOS的默认文件系统不区分,所以别在macOS上直接编译。我曾经试过,编译到一半报文件找不到,查了半天才发现是大小写问题。
- 不要用ZFS或Btrfs:这些高级文件系统虽然功能多,但AOSP编译时会产生大量小文件,它们的性能反而不如ext4。我试过Btrfs,编译时间比ext4慢了20%。
- 预留至少50GB空闲空间:编译过程中,磁盘使用量会突然飙升。如果空间不够,编译会直接失败。我习惯保持磁盘使用率不超过80%。
- 电源管理要关掉:编译时CPU会长时间满载,笔记本的话记得插电源,并关闭自动休眠。我有一台笔记本编译到一半自动休眠,醒来后编译进程全挂了。
好了,硬件和系统准备就绪。下一步就是安装必要的依赖包和工具链了。这些东西装好,你就能正式开始下载AOSP源码了。