Ubuntu 24.04 + Android 15 (AOSP) 环境搭建与源码同步完整指南

文章目录

    • 一、硬件与环境要求
    • [二、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 安装说明


三、系统初始化与基础工具

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 host
  • Failed to connect to android.googlesource.com
  • curl 56 Recv failure
  • early 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 clientrepo 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:并发过高,降低并发

  • 个别仓库失败:

    bash 复制代码
    rm -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% 都不是"你操作错了",而是环境与网络问题


相关推荐
STCNXPARM2 小时前
Linux PCI/PCIe子系统深度剖析
linux·运维·服务器·pci/pcie
郝学胜-神的一滴2 小时前
深入理解Linux套接字(Socket)编程:从原理到实践
linux·服务器·开发语言·网络·c++·程序人生·算法
坐怀不乱杯魂2 小时前
Linux - 线程
linux·c++
小小码农Come on2 小时前
QT中窗口位置、相对位置、绝对位置
android·开发语言·qt
EverydayJoy^v^2 小时前
RH134学习进程——八.管理存储堆栈
linux·运维·服务器
爱编码的傅同学3 小时前
【线程同步】信号量与环形队列的生产消费模型
linux·windows·ubuntu·centos
Nick.Q3 小时前
CentOS 8 离线安装beyond compare
linux·centos
鹿鸣天涯3 小时前
openEuler学习笔记1-openEuler前世今生
linux·openeuler
pwn蒸鱼3 小时前
buuctf中的mrctf2020_shellcode
linux·安全