如何在安卓模拟器上运行自行编译的AOSP 12L arm64 system.img镜像
自定义AOSP arm64镜像模拟器运行方案
此前启动失败的核心原因
- 你编译生成的
system.img、boot-5.4.img、ramdisk.img、vbmeta.img是面向索尼Xperia 10 III实体设备的专属构建产物,绑定了该设备的专有硬件驱动、设备树配置、分区挂载规则、AVB校验逻辑,和官方Android Emulator、Anbox提供的通用虚拟硬件环境完全不兼容,直接替换官方镜像的system分区会触发驱动加载异常、签名校验失败,直接导致模拟器进程终止。
可行方案
方案1:编译适配官方模拟器的AOSP目标(稳定性最高、调试体验最好)
这是官方支持的自定义镜像测试方案,不需要更换现有工具链,适合测试无硬件依赖的系统修改(比如Framework逻辑调整、系统应用改动、通用权限/服务配置改动):
- 操作步骤:
- 进入已同步完成的AOSP源码根目录,执行环境初始化命令:
source build/envsetup.sh - 选择arm64架构的模拟器编译目标:
lunch aosp_arm64-eng(如需贴近正式版运行环境可选择aosp_arm64-userdebug) - 执行编译,完成后直接在源码终端运行
emulator命令,会自动加载本地编译的全套自定义镜像,不需要手动替换img文件
- 进入已同步完成的AOSP源码根目录,执行环境初始化命令:
- 优势:启动速度快,完美适配Android Studio的断点调试、日志抓取、性能分析工具,系统运行流畅度最高。
方案2:基于原生QEMU启动设备专属镜像(可测试索尼定制版镜像基础启动逻辑)
如果你需要测试针对Xperia 10 III编译的那套专属镜像,可以用原生QEMU配置匹配的虚拟硬件参数启动:
- 前置准备:从你编译生成的
boot-5.4.img中提取对应内核镜像、设备树blob文件 - 核心配置要点:
- 虚拟硬件配置选择arm64架构,分配内存不小于4G,按分区顺序挂载你编译生成的system、ramdisk、vbmeta镜像
- 启动参数添加
androidboot.verifiedbootstate=orange,关闭AVB校验,避免自定义签名镜像触发校验拦截 - 启动参数添加
selinux=0 enforcing=0,临时关闭SELinux强制模式,避免实体设备专属SELinux规则在虚拟硬件下触发权限拒绝导致卡启动
- 限制:QEMU无法模拟Xperia 10 III的专有硬件(相机、基带、触控IC、传感器等),所有依赖专有硬件的功能都会运行异常,仅能验证系统基础启动流程、无硬件依赖的系统逻辑是否正常。
方案3:使用封装好的第三方安卓虚拟化工具
如果不想手动配置QEMU启动参数,可以选择支持自定义镜像导入的第三方安卓虚拟化工具,这类工具本质是预配置好的QEMU环境,支持直接选择本地img文件加载启动,操作门槛更低。
- 限制:和原生QEMU方案一致,无法模拟实体手机专有硬件,仅能做基础启动验证。
注意:所有模拟器方案都不能完全替代实体机测试,尤其是你编译的是厂商专属定制AOSP镜像,涉及硬件抽象层、专有驱动、外设适配的功能,必须刷入Xperia 10 III实体设备才能完成完整验证,模拟器仅适合刷机前的前置基础校验。
内容的提问来源于stack exchange,提问作者Anerudh
相关产品推荐
相关产品推荐

