M1 Mac上AOSP编译的Android11/13/14模拟器镜像无法启动求助
针对AOSP编译arm64模拟器镜像启动失败的解决方案
以下是针对你遇到的Android11/13/14分支编译镜像无法启动(Android13出现VFS挂载根文件系统panic)问题的具体修复步骤:
1. 修正模拟器内核配置
Android13+的sdk_phone_arm64默认内核配置可能缺失QEMU virtio块设备支持,这是导致根文件系统挂载失败的核心原因:
- 进入内核源码目录(如
kernel/common或对应分支的内核路径) - 加载模拟器专属内核配置:
make ARCH=arm64 goldfish_defconfig - 打开配置编辑器:
make ARCH=arm64 menuconfig - 确保以下选项设为
y(编译进内核):CONFIG_VIRTIO_BLK(virtio块设备驱动)CONFIG_VIRTIO_MMIO(virtio MMIO接口支持)CONFIG_BLK_DEV_INITRD(初始RAM磁盘支持)
- 保存配置后重新编译内核:
make ARCH=arm64 -j$(nproc) - 将编译生成的
arch/arm64/boot/Image替换到AOSP的out/target/product/generic_arm64/目录,重新执行make emu_img_zip
2. 使用模拟器专属编译目标
sdk_phone_arm64是通用手机目标,Android13+推荐使用模拟器专属目标来确保配置正确:
- 替换原lunch命令:
lunch sdk_gphone64_arm64-userdebug - 执行全量清理编译:
m clean && m -j$(nproc) - 重新生成镜像包:
make emu_img_zip
3. 调整根文件系统挂载参数
编辑device/generic/goldfish/arm64/init.rc(对应设备的初始化脚本),确保根挂载逻辑正确:
- 在
on init段中,确认根设备挂载命令为:mount ext4 /dev/block/vda /system ro wait - 检查
initrd相关初始化步骤,确保必要的块设备模块已加载
4. 验证镜像打包完整性
手动检查out/target/product/generic_arm64/emu_img.zip的内容,确保包含:
kernel-ranchu(或kernel-goldfish)内核文件ramdisk.img、system.img、userdata.img- 若缺少内核文件,手动复制编译好的内核镜像到对应目录后重新打包
5. 适配M1 Mac模拟器配置
修改AVD的config.ini文件(路径:~/.android/avd/<你的AVD名称>/config.ini),添加以下参数:
hw.cpu.ncore=2disk.dataPartition.size=6442450944(6GB数据分区)hw.ramSize=2048hw.gpu.mode=swiftshader_indirect(适配M1 GPU)
内容的提问来源于stack exchange,提问作者Banana999
相关产品推荐
相关产品推荐

