You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Android模拟器USB直通失败:‘usb-host’不是有效设备模型名求助

解决Android Emulator USB直通中‘usb-host’无效的问题

我身边有不少开发者朋友在使用30.0.24及以上版本的Android Emulator(包括你用的30.5.3.0)时成功实现了USB直通功能,所以你的版本是完全符合要求的,问题大概率出在命令参数格式或者前置配置上。下面分享几个亲测有效的解决方向:

  • 修正QEMU参数格式
    Android Emulator内置的QEMU对参数格式有严格要求,你当前的命令里vendoridproductid缺少了十六进制前缀0x,这可能是导致识别失败的原因。试试调整后的命令:

    emulator -avd Pixel_3a_API_30_x86 -qemu -usb -device usb-host,vendorid=0x076B,productid=0x3821
    

    另外要注意,-qemu必须作为所有QEMU专属参数的起始标记,确保后面的-usb-device参数被正确传递给内置QEMU进程。

  • 配置主机USB设备权限
    如果是Linux或macOS环境,主机系统可能限制了模拟器对USB设备的访问权限:

    1. lsusb命令确认目标设备的vendor和product ID是否正确(你的076B和3821是对的)。
    2. 在Linux下创建udev规则文件/etc/udev/rules.d/50-android-usb.rules,添加内容:
      SUBSYSTEM=="usb", ATTR{idVendor}=="076b", ATTR{idProduct}=="3821", MODE="0666", GROUP="plugdev"
      
    3. 执行sudo udevadm control --reload-rules && sudo udevadm trigger重新加载规则。
      Windows环境下则需要确保目标USB设备的驱动已正确安装,并且模拟器进程拥有足够的系统权限。
  • 排除设备兼容性与环境干扰

    • 先尝试用普通USB设备(比如U盘)测试直通功能,有些特殊外设(如加密狗、专业硬件)可能不被QEMU的usb-host支持。
    • 确认你的AVD使用的是x86/x86_64架构的系统镜像,ARM架构的AVD目前不支持USB直通。
    • 关闭主机上所有占用该USB设备的程序(比如设备自带的管理软件),避免资源冲突。

我自己之前用30.6.0版本的模拟器,通过上述调整后的命令成功直通了一款USB扫码枪,亲测有效。按上面的步骤排查后,应该能解决你的问题。

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

火山引擎 最新活动