文章目录
-
- 一、硬件与环境要求
- [二、Ubuntu 24.04 安装说明](#二、Ubuntu 24.04 安装说明)
- 三、系统初始化与基础工具
- [四、DNS 与网络问题处理](#四、DNS 与网络问题处理)
-
- [4.1 使用 systemd-resolved 固定公共 DNS](#4.1 使用 systemd-resolved 固定公共 DNS)
- [五、安装 repo 工具](#五、安装 repo 工具)
-
- [5.1 创建 bin 并加入 PATH](#5.1 创建 bin 并加入 PATH)
- [5.2 下载 repo launcher](#5.2 下载 repo launcher)
- [5.3 改 repo client 更新源(两种方式二选一)](#5.3 改 repo client 更新源(两种方式二选一))
- [5.4 验证](#5.4 验证)
- [六、Git 基础配置(必须,否则 repo init 会失败)](#六、Git 基础配置(必须,否则 repo init 会失败))
- [七、repo 初始化(Android 15)](#七、repo 初始化(Android 15))
-
- [7.1 创建工作目录](#7.1 创建工作目录)
- [7.2 使用清华镜像初始化](#7.2 使用清华镜像初始化)
- [八、repo / git 网络稳定性增强配置](#八、repo / git 网络稳定性增强配置)
- [九、同步 Android 15 源码](#九、同步 Android 15 源码)
-
- [9.1 首次同步](#9.1 首次同步)
- [9.2 常见问题说明](#9.2 常见问题说明)
- [9.3 可选:下载困难时的"离线/网盘"兜底方案](#9.3 可选:下载困难时的“离线/网盘”兜底方案)
- 十、编译前准备
- 十一、开始编译
- 十二、总结
本文基于 Ubuntu 24.04 (noble) + Android 15.0.0_r1 ,在 VMware 虚拟机 环境下实测整理,重点补充了 网络/DNS 问题、repo 初始化失败、国内网络访问 googlesource 的解决方案。
一、硬件与环境要求
- 内存:16 GB 及以上(推荐 32 GB)
- 磁盘:≥ 300 GB(Android 15 体量非常大)
- 系统:Ubuntu 24.04 LTS (noble)
- 环境:VMware Workstation / Fusion
二、Ubuntu 24.04 安装说明
- 官方下载:https://releases.ubuntu.com/24.04/
- 桌面版或 Server 均可(本文以桌面版为例)
- 虚拟机磁盘建议 一次性分配 ≥300G
三、系统初始化与基础工具
bash
sudo apt update
sudo apt install -y \
git gnupg flex bison build-essential zip curl \
zlib1g-dev libc6-dev libncurses-dev \
libx11-dev libgl1-mesa-dev libxml2-utils xsltproc unzip \
python3 python3-pip python-is-python3 \
openjdk-17-jdk \
bc rsync ccache lsb-release libssl-dev
Android 15 官方推荐 JDK 17,Ubuntu 24.04 直接使用 OpenJDK 即可,无需再手动安装旧版 JDK。
四、DNS 与网络问题处理
在国内 + 虚拟机环境下,repo / git 经常出现以下错误:
Could not resolve hostFailed to connect to android.googlesource.comcurl 56 Recv failureearly EOF
4.1 使用 systemd-resolved 固定公共 DNS
bash
sudo nano /etc/systemd/resolved.conf
修改为:
ini
[Resolve]
DNS=8.8.8.8 223.5.5.5
FallbackDNS=114.114.114.114
DNSStubListener=yes
重启服务:
bash
sudo systemctl restart systemd-resolved
确认生效:
bash
resolvectl status
确保 /etc/resolv.conf 指向 stub:
bash
ls -l /etc/resolv.conf
# 应该指向 /run/systemd/resolve/stub-resolv.conf
五、安装 repo 工具
说明:repo 由两部分组成:
- repo launcher :你手动下载到
~/bin/repo的启动脚本- repo client :
repo init时会在.repo/repo/下拉取的 repo 源码在国内网络环境下,建议把 repo client 的更新源 也切换到镜像,否则可能出现从
gerrit.googlesource.com/git-repo拉取失败(例如clone.bundle网络不可达)。
5.1 创建 bin 并加入 PATH
bash
mkdir -p ~/bin
export PATH=$HOME/bin:$PATH
建议把 PATH 写入
~/.bashrc,避免每次开终端都要 export:
bash
echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
5.2 下载 repo launcher
bash
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod +x ~/bin/repo
5.3 改 repo client 更新源(两种方式二选一)
方式 A:环境变量(推荐,通用)
在 ~/.bashrc 追加:
bash
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
然后:
bash
source ~/.bashrc
方式 B:repo init 直接指定(一次性)
bash
repo init ... --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
5.4 验证
bash
which repo
repo version
bash
mkdir -p ~/bin
export PATH=$HOME/bin:$PATH
下载 repo:
bash
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod +x ~/bin/repo
验证:
bash
which repo
repo version
六、Git 基础配置(必须,否则 repo init 会失败)
bash
git config --global user.name "aosp"
git config --global user.email "aosp@user.com"
七、repo 初始化(Android 15)
7.1 创建工作目录
bash
mkdir android15
cd android15
7.2 使用清华镜像初始化
bash
repo init \
-u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest \
-b android-15.0.0_r1
❗ 如果使用官方
android.googlesource.com,在国内极易超时失败。
初始化成功后会看到:
repo has been initialized in ...
八、repo / git 网络稳定性增强配置
bash
git config --global http.version HTTP/1.1
git config --global http.postBuffer 524288000
git config --global http.lowSpeedLimit 1
git config --global http.lowSpeedTime 600
九、同步 Android 15 源码
9.1 首次同步
bash
repo sync -j4 --fail-fast
Android 15 仓库数量巨大,首次不建议用大并发。
9.2 常见问题说明
-
curl 56 / early EOF:网络抖动,重试即可 -
unable to create thread:并发过高,降低并发 -
个别仓库失败:
bashrm -rf <repo_dir> repo sync <repo_dir> -j1
9.3 可选:下载困难时的"离线/网盘"兜底方案
在某些网络环境下,AOSP 全量同步可能非常不稳定(尤其是首次拉取),可以考虑:
- 参考文章(含网盘下载/离线同步思路):
text
https://zwc365.com/2020/08/30/android10-baiduwangpan
- 如果解压
.7z时出现报错,p7zip有时兼容性更好:
bash
sudo apt install -y p7zip-full
p7zip -d android-15.0.0_r1.7z
注:离线包/网盘资源的版本与完整性需要自行核对(tag/manifest 对齐)。
十、编译前准备
bash
source build/envsetup.sh
lunch
选择如:
aosp_x86_64-userdebug
十一、开始编译
bash
make -j$(nproc) 2>&1 | tee build.log
如内存不足导致 cc1plus killed,可临时创建 swap:
bash
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
sudo mkswap /swapfile
sudo swapon /swapfile
十二、总结
- Ubuntu 24.04 + Android 15 完全可行
- 最大问题来自:网络 / DNS / repo 并发
- 使用 国内镜像 + systemd-resolved + 低并发 是成功关键
如果你在同步或编译 Android 15 过程中遇到新的报错,90% 都不是"你操作错了",而是环境与网络问题。