如何让Android Emulator使用本地非捆绑版QEMU运行ARM架构AVD?
解决方法
首先明确:Android官方模拟器是基于QEMU做了大量定制修改的,直接让它调用你本地安装的标准QEMU几乎无法正常工作,两者的参数、补丁适配差异极大。不过你可以手动使用本地的qemu-system-arm直接加载AVD的镜像文件,具体步骤如下:
找到AVD存储目录
通常AVD默认存在~/.android/avd/[你的AVD名称].avd/路径下,比如你的AVD叫hd2,对应路径就是~/.android/avd/hd2.avd/收集AVD关键文件与配置
该目录下的system.img是系统镜像,userdata.img是用户数据镜像,ramdisk.img是启动ramdisk,config.ini里记录了AVD的硬件配置(如内存大小、CPU核心数等)构造本地QEMU启动命令
参考以下格式(根据你的实际配置调整参数):qemu-system-arm \ -machine virt \ -cpu cortex-a9 \ -m 1024 \ # 对应AVD配置里的内存大小 -drive file=~/.android/avd/hd2.avd/system.img,format=qcow2,if=none,id=system \ -device virtio-blk-pci,drive=system \ -drive file=~/.android/avd/hd2.avd/userdata.img,format=qcow2,if=none,id=userdata \ -device virtio-blk-pci,drive=userdata \ -drive file=~/.android/avd/hd2.avd/ramdisk.img,format=raw,if=none,id=ramdisk \ -device virtio-blk-pci,drive=ramdisk \ -kernel ~/.android/avd/hd2.avd/kernel-qemu \ # 如果AVD目录下存在该文件 -append "console=ttyAMA0 root=/dev/vda rw init=/init" \ -serial stdio \ -display gtk # 或使用你需要的显示后端注意事项
- 不同Android版本的镜像对应的QEMU参数可能有差异,需根据
config.ini调整CPU型号、内存、存储驱动等参数 - 若你的AVD是64位ARM架构,需使用
qemu-system-aarch64替代qemu-system-arm - 这种方式无法使用Android模拟器的特有功能(如虚拟摄像头、Google Play服务集成等),仅能实现基础系统启动
- 不同Android版本的镜像对应的QEMU参数可能有差异,需根据
另外,如果你想尝试让Android Emulator调用本地QEMU,可以试试以下hack方式,但不保证正常运行:
- 备份Android自带的QEMU二进制文件(比如
$ANDROID_HOME/emulator/qemu/linux-x86_64/qemu-system-armel) - 将本地的
qemu-system-arm复制到上述路径,并重命名为原文件名 - 启动模拟器,观察是否能正常运行(大概率会因参数不兼容崩溃)
内容的提问来源于stack exchange,提问作者Drew
相关产品推荐
相关产品推荐

