Ubuntu 22.04 下编译 AOSP(Android13)并在模拟器中运行

3,636 阅读2分钟

前期准备

准备512及以上的固态硬盘,Android13源码下载和构建之后会占用接近300G空间,构建多个版本会占用更多

16GB及以上内存,32GB及以上swap空间,否则编译初期容易OOM,导致终端闪退

好的科学上网,没有的话可以使用国内镜像

下载步骤

  • 安装依赖软件包
sudo apt install repo git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip libncurses5
  • 创建一个文件夹,用于存储AOSP源码
mkdir ~/AOSP
cd ~/AOSP
  • 配置git信息
git config --global user.name Your Name
git config --global user.email you@example.com
  • 初始化Repo
repo init -u https://android.googlesource.com/platform/manifest

当然,如果没有科学上网,可以使用清华源:

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest
  • 下载源码
repo sync

此处比较耗时,大概会下载接近100G,但会有进度提示,支持断点续传。所以可以随时退出,不用害怕下载进度丢失。

编译步骤

  • 设置环境变量
source build/envsetup.sh

此添加是临时的,重新打开终端需要重设

  • 选择编译目标 就是选择你编译的系统要运行在哪里,我是运行在PC模拟器上,所以可以输入:
lunch sdk_pc_x86_64-userdebug

此会编译一个运行在模拟器的PC版本(试过其它版本都不行)。也可以直接输入lunch,可以有列表提示让你选择:

eethu@neethu-Ubuntu:~/aosp$ lunch

You're building on Linux

Lunch menu .. Here are the common combinations:
     1. aosp_arm-eng
     2. aosp_arm64-eng
     3. aosp_barbet-userdebug
     4. aosp_bluejay-userdebug
     5. aosp_bramble-userdebug
     6. aosp_bramble_car-userdebug
     7. aosp_car_arm-userdebug
     8. aosp_car_arm64-userdebug
     9. aosp_car_x86-userdebug
     10. aosp_car_x86_64-userdebug
     ...

  • 编译
m

也可以指定开启几个线程去编译,比如 m -j8。如果不设,会根据你的cpu核心数自动选择。编译过程很漫长,和你电脑的性能有关,大概1-3小时。

如果你看到如下,说明编译成功了:

#### build completed successfully (18:09 (mm:ss)) ####

编译后的产物输出在当前文件夹下的out/target/product目录中。

在模拟器上运行

只需一行命令:

emulator

1662789828394.png

现在,你可以对你的新系统为所欲为了。