You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android模拟器切换GUI与CLI启动方式触发启动失败问题咨询

问题分析与解决方案

首先,你的CLI启动命令确实存在错误——你把adb start-server和emulator命令混在一起执行了,这是触发问题的第一个关键点。adb start-server是用来启动ADB后台服务的独立命令,而启动模拟器应该直接使用emulator命令,两者不能合并成一条命令。

接下来,切换启动方式后出现的异常,核心原因是GUI和CLI启动时的配置/参数不匹配,尤其是你在CLI中添加了-writable-system参数,这个参数会让模拟器以可写系统分区的模式启动,和GUI默认的只读系统分区模式冲突,再加上快照机制的影响,就会出现你遇到的两种报错:

  • 先CLI启动(带-writable-system)再GUI启动:因为CLI启动修改了系统分区状态,GUI默认尝试加载之前的快照时,无法兼容这种状态,所以抛出“Cold boot: snapshot failed to load”。
  • 先GUI启动再CLI启动:GUI启动的快照是只读系统分区状态,CLI用-writable-system启动时,virtio块设备的加载逻辑无法适配这个快照,导致“qemu-system-i386.exe: Failed to load virtio-blk:virtio”。

具体修复步骤

  1. 修正CLI启动命令
    把你原来的错误命令拆分或修改为:

    # 先启动ADB服务(如果需要的话,通常模拟器启动会自动触发)
    adb start-server
    # 单独启动模拟器
    emulator -avd Pixel_2_API_24 -writable-system
    

    或者直接执行emulator -avd Pixel_2_API_24 -writable-system即可,因为启动模拟器时会自动启动ADB服务,无需单独执行adb start-server。

  2. 统一启动参数/快照策略
    你有两个选择:

    • 选项一:禁用快照(简单直接)
      在GUI的AVD管理器中,编辑你的Pixel_2_API_24模拟器,找到“快速启动”选项,勾选“冷启动”(彻底禁用快照);同时CLI启动时添加-no-snapshot-load参数,命令变为:
      emulator -avd Pixel_2_API_24 -writable-system -no-snapshot-load
      
      这样两种启动方式都以冷启动模式运行,不会有快照冲突。
    • 选项二:保持参数一致
      如果你需要使用快照,确保GUI和CLI启动时使用相同的系统分区状态:
      • 要么在GUI启动时也启用-writable-system:编辑AVD的config.ini文件(路径一般是C:\Users\<你的用户名>\.android\avd\Pixel_2_API_24.avd\config.ini),添加一行hw.writableSystem=yes;
      • 要么CLI启动时去掉-writable-system参数,和GUI默认状态保持一致。
  3. 清理损坏的快照文件
    已经存在的冲突快照可能会持续引发问题,建议删除现有快照:
    找到模拟器的快照目录(Windows下是C:\Users\<你的用户名>\.android\avd\Pixel_2_API_24.avd\snapshots\),删除其中所有文件,然后重新启动模拟器,让它生成新的干净快照。

内容的提问来源于stack exchange,提问作者Zombo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 19:07:50