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


相关推荐
chlk1231 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
阿巴斯甜1 天前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
舒一笑1 天前
Ubuntu系统安装CodeX出现问题
linux·后端
Kapaseker1 天前
实战 Compose 中的 IntrinsicSize
android·kotlin
改一下配置文件1 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
xq95271 天前
Andorid Google 登录接入文档
android
黄林晴1 天前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
深紫色的三北六号1 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash2 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
冬奇Lab2 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读