开发环境准备: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,网速慢的话等一天都有可能
注意:千万别用虚拟机跑AOSP编译!我在项目中遇到过,虚拟机里磁盘I/O性能损失太严重,编译时间直接翻倍。双系统或者物理机安装才是正道。

Linux系统安装(Ubuntu推荐)

为什么推荐Ubuntu?说白了,Google官方文档里用的就是Ubuntu LTS版本。你想想看,AOSP的构建系统、工具链、依赖库,都是在Ubuntu上测试通过的。用其他发行版当然也行,但你可能要花大量时间去解决依赖问题。

我个人习惯用 Ubuntu 22.04 LTS。为什么是这个版本?因为它的glibc、gcc、python版本跟AOSP官方要求最匹配。我曾经试过Ubuntu 20.04编译Android 14,结果因为python版本太低,折腾了半天才搞定。

安装步骤简述

  1. 下载ISO镜像:去Ubuntu官网下载22.04 LTS桌面版
  2. 制作启动盘:用Rufus(Windows)或dd命令(Linux)写入U盘
  3. 安装过程:选择「清除整个磁盘并安装Ubuntu」——如果你打算专机专用的话
  4. 设置用户:用户名建议用英文,不要带空格。我见过有人用中文用户名,结果编译脚本路径解析出错
小技巧:安装时选择「最小安装」,省掉LibreOffice这些办公软件。AOSP编译机不需要这些花里胡哨的东西。

磁盘分区建议

磁盘分区这块,很多人不重视。嗯,这里要注意——分区没规划好,后面有你哭的。

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
警告:swap文件不要放在 /tmp 分区上!/tmp 重启后会被清空,你的swap文件就没了。放在 / 或者 /home 下都行。

避坑指南

最后分享几个我踩过的坑:

  • 文件系统大小写敏感:AOSP要求文件系统区分大小写。macOS的默认文件系统不区分,所以别在macOS上直接编译。我曾经试过,编译到一半报文件找不到,查了半天才发现是大小写问题。
  • 不要用ZFS或Btrfs:这些高级文件系统虽然功能多,但AOSP编译时会产生大量小文件,它们的性能反而不如ext4。我试过Btrfs,编译时间比ext4慢了20%。
  • 预留至少50GB空闲空间:编译过程中,磁盘使用量会突然飙升。如果空间不够,编译会直接失败。我习惯保持磁盘使用率不超过80%。
  • 电源管理要关掉:编译时CPU会长时间满载,笔记本的话记得插电源,并关闭自动休眠。我有一台笔记本编译到一半自动休眠,醒来后编译进程全挂了。

好了,硬件和系统准备就绪。下一步就是安装必要的依赖包和工具链了。这些东西装好,你就能正式开始下载AOSP源码了。