Android模拟器USB直通失败:‘usb-host’不是有效设备模型名求助
解决Android Emulator USB直通中‘usb-host’无效的问题
我身边有不少开发者朋友在使用30.0.24及以上版本的Android Emulator(包括你用的30.5.3.0)时成功实现了USB直通功能,所以你的版本是完全符合要求的,问题大概率出在命令参数格式或者前置配置上。下面分享几个亲测有效的解决方向:
修正QEMU参数格式
Android Emulator内置的QEMU对参数格式有严格要求,你当前的命令里vendorid和productid缺少了十六进制前缀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设备的访问权限:- 用
lsusb命令确认目标设备的vendor和product ID是否正确(你的076B和3821是对的)。 - 在Linux下创建udev规则文件
/etc/udev/rules.d/50-android-usb.rules,添加内容:SUBSYSTEM=="usb", ATTR{idVendor}=="076b", ATTR{idProduct}=="3821", MODE="0666", GROUP="plugdev" - 执行
sudo udevadm control --reload-rules && sudo udevadm trigger重新加载规则。
Windows环境下则需要确保目标USB设备的驱动已正确安装,并且模拟器进程拥有足够的系统权限。
- 用
排除设备兼容性与环境干扰
- 先尝试用普通USB设备(比如U盘)测试直通功能,有些特殊外设(如加密狗、专业硬件)可能不被QEMU的
usb-host支持。 - 确认你的AVD使用的是x86/x86_64架构的系统镜像,ARM架构的AVD目前不支持USB直通。
- 关闭主机上所有占用该USB设备的程序(比如设备自带的管理软件),避免资源冲突。
- 先尝试用普通USB设备(比如U盘)测试直通功能,有些特殊外设(如加密狗、专业硬件)可能不被QEMU的
我自己之前用30.6.0版本的模拟器,通过上述调整后的命令成功直通了一款USB扫码枪,亲测有效。按上面的步骤排查后,应该能解决你的问题。
内容的提问来源于stack exchange,提问作者John Reynolds




