Android系统编译

编译 Android 系统(AOSP - Android Open Source Project)是一个复杂但结构化的过程,涉及多个步骤和工具。以下是 在 Linux 环境下 编译 AOSP 的基本指令流程,适用于官方支持的设备或通用系统镜像(如 aosp_arm64-eng)。


🧰 一、准备工作

1. 安装依赖环境(Ubuntu 20.04/22.04 推荐)

1
2
3
4
sudo apt update
sudo apt install git-core gnupg flex bison build-essential zip curl zlib1g-dev \
gcc-multilib g++-multilib libc6-dev-i386 libncurses5 libxml2-utils xsltproc \
unzip fontconfig python3 python3-pip repo

repo 是 Google 提供的一个管理多个 Git 仓库的工具。


📁 二、初始化代码库

1. 创建工作目录并进入

1
mkdir ~/aosp && cd ~/aosp

2. 初始化仓库(以 AOSP 主分支为例)

1
repo init -u https://android.googlesource.com/platform/manifest

如果想切换特定版本(如 Android 14 UDC2):

1
repo init -u https://android.googlesource.com/platform/manifest -b android-14.0.0_r21

3. 同步代码

1
repo sync -j8

-j8 表示使用 8 个线程同步,可根据 CPU 核心数调整。


🔧 三、编译 Android 系统

1. 设置编译环境

1
source build/envsetup.sh

2. 选择目标设备配置(lunch)

1
lunch

然后从列表中选择一个目标(例如:aosp_arm64-eng

常见选项:

  • aosp_arm64-eng:模拟器(eng 版本)
  • aosp_x86_64-eng:x86 模拟器
  • pixel6a 或其他设备代号:真实设备支持

3. 开始编译

1
make -j$(nproc)

-j$(nproc) 自动根据 CPU 核心数设置并行编译任务数量

首次编译可能需要数小时,具体取决于硬件性能。


📱 四、运行编译结果

使用模拟器启动系统

1
emulator

如果你编译的是真机版本,需将生成的 image 文件刷入设备(使用 fastboot 工具):

1
fastboot flashall

🧪 五、常用命令补充

功能 命令
清理所有编译结果 make clean
只清理某个模块 mmma path/to/module -B
更新代码并重新编译 repo sync && make -j$(nproc)
查看 lunch 支持的设备列表 lunch 后输入 Tab 键
查看当前构建信息 gettop && get_build_var TARGET_PRODUCT

📝 六、注意事项

  • 至少预留 250GB+ 磁盘空间
  • 推荐使用 SSD
  • 使用 Linux 系统(推荐 Ubuntu)
  • 不同版本的 AOSP 对 JDK 版本有要求(一般为 Java 11)
  • 若是定制 ROM(如 LineageOS),需导入对应设备树和 vendor blobs