如何在Ubuntu虚拟机中从源码构建Android镜像与模拟器?
基于Ubuntu 22.04构建Android镜像与模拟器分步指南
一、系统环境准备
- 升级系统并安装基础构建依赖
sudo apt update && sudo apt upgrade -y sudo apt install -y git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig - 解决Python版本冲突(强制使用Python3,适配新版Android构建要求)
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 100 # 验证版本,确保输出为Python3.x python --version - 安装适配的OpenJDK(Android 12及以上分支推荐OpenJDK 11)
sudo apt install -y openjdk-11-jdk # 配置环境变量 echo "export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64" >> ~/.bashrc echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> ~/.bashrc source ~/.bashrc
二、配置Repo工具并同步源码
- 安装Repo工具
mkdir -p ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo echo "export PATH=\$HOME/bin:\$PATH" >> ~/.bashrc source ~/.bashrc - 初始化Repo(选择2023年稳定的Android 13分支,确保包含external/qemu代码)
mkdir android-build && cd android-build repo init -u https://android.googlesource.com/platform/manifest -b android-13.0.0_r33 - 同步完整源码(自动拉取external/qemu,中断后重复执行即可)
repo sync -j$(nproc)
三、构建前问题修复
- 解决32位类库缺失(Ubuntu 22.04默认禁用32位架构,手动开启)
sudo dpkg --add-architecture i386 sudo apt update sudo apt install -y libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 - 禁用Jack Server(Android 10及以后分支已弃用Jack,改用JDK原生编译)
echo "USE_JACK=false" >> ~/.bashrc source ~/.bashrc
四、执行构建
- 初始化构建环境
source build/envsetup.sh - 选择模拟器目标设备(64位x86架构适配VirtualBox虚拟机)
lunch aosp_x86_64-eng - 启动多线程构建
make -j$(nproc) - 单独构建模拟器组件(如需更新模拟器而非完整镜像)
cd external/qemu ./android/scripts/unix/build-all.sh --verbose # 构建产物位于out/host/linux-x86/bin/目录
五、运行模拟器
- 启动模拟器(跳过快照加载确保使用新构建的镜像)
emulator -avd aosp_x86_64 -no-snapshot-load
内容的提问来源于stack exchange,提问作者Gorilla Sapiens
相关产品推荐
相关产品推荐

