将 USB 设备连接到 Android 模拟器?

Posted

技术标签:

【中文标题】将 USB 设备连接到 Android 模拟器?【英文标题】:Connect USB device to Android Emulator? 【发布时间】:2011-12-14 01:46:59 【问题描述】:

我们一直在研究 android 3.1+ 及其读取/写入连接到 OTG/主机端口的 USB 设备的能力。

我找到了一些代码示例,可让我检测和读取/写入 USB HID 设备,但目前,我根本没有可部署和远程调试的物理 3.1+ 兼容设备。

有谁知道我可以如何通过 PC/Eclipse 将我的 HID 设备连接到模拟器,以便应用程序可以检测设备并读取/写入设备?

我已经尝试列出当前连接的 USB 设备,但它没有显示,正如您无疑猜到的那样。

有什么想法吗?

干杯

【问题讨论】:

【参考方案1】:

Android 模拟器基于 QEMU。即使模拟器版本如此古老,似乎也支持从主机传递 USB 设备。不过,它似乎不适用于 ARM 设备,模拟的 ARM 机器没有 USB 控制器。 (我已经尝试为基于 Linux 3.4 的 goldfish_armv7 内核启用所有 USB 主机控制器,但运气不好。默认的模拟器 goldfish_armv7 内核甚至没有启用 Host USB。)

如果你不限于ARM并且可以使用x86,那么我建议查看http://www.android-x86.org/,它的图像可以与标准QEMU i386(或x86_64)机器一起使用。通过在 Linux 上使用 KVM 扩展,这也会产生更好的性能。

要通过供应商 ID 1234 和设备 ID abcd 的 USB 设备,您可以运行模拟器命令:

emulator -avd x86-machine -qemu -usb -usbdevice host:1234:abcd

或者,当使用 QEMU 时:

qemu-system-i386 -m 1G -cdrom android-x86.iso -usb -usbdevice host:1234:abcd

您将需要/dev/bus/usb/XXX/YYY 的读/写权限,为此您可以创建一个 udev 规则,例如:

SUBSYSTEM!="usb", GOTO="end_skip_usb"
ATTRSidVendor=="1234", ATTRSidProduct=="abcd", TAG+="uaccess"
LABEL="end_skip_usb"

现在,插入 USB 设备后,您的模拟器应该会识别 USB 设备。这是针对使用 Android x86 4.3 映像的 Linux 安装进行测试的。

【讨论】:

命令qemu-system-x86_64 -device help列出了所有可能的虚拟设备的名称;当我加载它们时-usb -readconfig .android/avd/intel-pch-xhci.cfg. 我认为最好明确说明 -usbdevice 主机选项仅适用于 Linux。来源:-qemu.weilnetz.de/doc/qemu-doc.html-2.3.3 USB 选项 @Tom USB 主机功能依赖于libusb,Windows 也支持该功能。过去 QEMU 有一个 Linux 依赖项,但在 QEMU 1.5 中使用this commit (changelog) 进行了更改。我认为文档已经过时了。 这可能需要 Android 来宾中的其他驱动程序,这些驱动程序可能可用也可能不可用。 正如@Lekensteyn 所说,它确实需要额外的驱动程序,我必须重建内核并启用 USB API:gist.github.com/Alabate/200f021e644baed84993dd6109811ba2【参考方案2】:

AFAIK 这是不可能的。 Android 模拟器不能模拟真实设备中存在的许多东西……但这让我想起了attempt to run ADB over Bluetooth。

这不是对您问题的直接肯定答案,但也许它可以帮助您找到解决方法,就像我所做的那样:在物理 x86 上网本(双启动)上安装“模拟器”并使用中提到的链接my posts 通过 WiFi 或蓝牙完成您尝试做的事情。

希望这会有所帮助。

【讨论】:

【参考方案3】:

使用this image在virtualBox或vm player上创建android虚拟机。

使用 ADB 连接(您的设备 IP)连接 USB 并与 Eclipse 连接。

【讨论】:

【参考方案4】:

使用来自here 的图像android-x86-4.0-r1-eeepc.iso 在带有Windows 7 主机的virtualbox 中安装了android guest(因为我公司的计算机锁定了bios,我无法启用我必须启用的vt-x 仿真安装 4.4 之前的版本)。然后插入USB驱动器,在Virtualbox Manager中打开VM-设置-USB,单击右侧带有加号的第二个图标,选择USB驱动器。 Virtualbox 然后为 USB 驱动器安装驱动程序。完成后,启动android VM。启动OpenManager,进入mnt/USB,U盘的文件都在了!

【讨论】:

以上是关于将 USB 设备连接到 Android 模拟器?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Android 手机连接到 Visual Studio Code?

常用的adb命令

通过USB连接到Xamarin.Android应用程序与网站进行通信

离线 Android 仅使用 USB 电缆连接到 PHP localhost

带有 USB 设备的 Android Logcat

1.2 运行您的应用