You need to enable JavaScript to run this app. 安卓模拟器无法正常挂载U盘 可检测USB连接但找不到存储路径
优惠活动
大模型
产品
解决方案
定价
更多

安卓模拟器无法正常挂载U盘 可检测USB连接但找不到存储路径

问题判断

当前U盘未完成正常挂载。从你提供的dmesg日志可直接定位:系统在USB透传的硬件识别阶段就出现了IO错误,表现为设备反复复位、块设备0扇区读取失败,根本没有推进到文件系统扫描、自动挂载的流程,因此/mnt/media_rw目录下不会生成对应的U盘挂载点。

修复操作步骤
  • 替换模拟器USB控制器配置
    你当前的启动命令默认调用老旧的uhci全速USB控制器,对常规高速U盘的兼容性极差,正是这类报错(设备反复复位、Unaligned partial completion这类IO错位问题)的主要诱因。需要将启动命令调整为xHCI控制器支持的配置:
    emulator -avd x86-machine -qemu -usb -device qemu-xhci -device usb-host,vendorid=0xffff,productid=0x5678
    
  • 提前解除主机对U盘的占用
    启动模拟器透传设备前,必须先在主机侧完全释放U盘的IO访问权,避免主机内核抢占设备资源导致模拟器侧读取数据错位:
    1. 执行lsblk定位U盘对应的块设备节点(一般是主机上非系统盘的外置设备,如sdb)
    2. 执行sudo umount /dev/sdb*卸载该U盘的所有挂载分区
    3. 执行sudo blockdev --flushbufs /dev/sdb清空主机侧对U盘的读写缓存
  • 验证块设备识别状态
    重新启动模拟器并完成U盘透传后,通过adb shell进入模拟器环境检查:
    1. 查看块设备列表:ls /dev/block/,确认存在U盘对应的块设备节点(如sda、sda1)
    2. 查看最新内核日志:dmesg | grep -E "sda|usb",确认不再出现设备反复复位、扇区读取失败的报错
  • 手动完成挂载用于调试
    安卓模拟器内置的vold存储管理服务,通常不会自动识别QEMU透传进来的U盘设备,在块设备识别正常的前提下,可手动创建挂载点完成挂载,不影响应用功能的调试验证:
    1. 新建测试挂载目录:mkdir -p /mnt/media_rw/TEST_USB
    2. 根据U盘实际的文件系统类型执行挂载(民用U盘常见格式为exfat、fat32、ntfs):
      # 以exfat格式为例,将sda1替换为实际识别到的U盘主分区节点
      mount -t exfat /dev/block/sda1 /mnt/media_rw/TEST_USB
      
    3. 修正挂载目录的所属用户和权限,保证应用可正常读写:
      chown media_rw:media_rw /mnt/media_rw/TEST_USB
      chmod 0700 /mnt/media_rw/TEST_USB
      
    完成操作后,即可在该路径下完成文件读写,调试应用的U盘存储逻辑。
  • 排除USB资源抢占冲突
    如果调整控制器后依然出现设备反复复位、IO读取错误,需要检查主机侧是否运行了其他USB透传类进程(如其他虚拟机软件、其他安卓模拟器的后台服务),这类进程会抢占U盘的设备访问权,导致QEMU透传通道的IO响应错位,将无关进程全部关闭后再重试即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 14:24:09