无法在 android 模拟器上安装 USB 记忆棒

Failed to mount usb stick on android emulator

我有一个带 USB 端口的 android 设备。我正在尝试做一个 android 应用程序,将文件存储到 USB 记忆棒。首先,我需要先在模拟器上验证它,然后才能将它部署到设备中。我的问题是模拟器不能很好地安装 USB 记忆棒。到目前为止,我可以检测到 USB 连接(在应用程序中和使用 lsusb)但是我找不到保存文件的路径,因为 USB 棒似乎没有安装。重现:

将 USB 连接到电脑:

$ lsusb
Bus 001 Device 016: ID ffff:5678

/etc/udev/rules.d/99-usb-android.rules 中为这个特定的 usb 创建开发规则:

SUBSYSTEM=="usb", ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="5678", MODE="0666"
SUBSYSTEM=="usb_device", ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="5678", MODE="0666"

重新加载 udev 规则:

 sudo udevadm control --reload-rules

运行 支持 USB 的模拟器:

emulator -avd x86-machine -qemu -usb -device usb-host,vendorid=0xffff,productid=0x5678

启动后,我在 dmesg 上看到一些重复的错误

[   36.300218] usb 1-1: reset full-speed USB device number 2 using uhci_hcd
[   37.240093] usb 1-1: reset full-speed USB device number 2 using uhci_hcd
[   38.180262] usb 1-1: reset full-speed USB device number 2 using uhci_hcd
[   38.652826] sd 2:0:0:0: [sda] Unaligned partial completion (resid=4095, sector_sz=512)
[   38.659008] sd 2:0:0:0: [sda] tag#0 FAILED Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
[   38.664371] sd 2:0:0:0: [sda] tag#0 CDB: Read(10) 28 00 00 00 00 00 00 00 08 00
[   38.668527] print_req_error: I/O error, dev sda, sector 0
[   38.671306] Buffer I/O error on dev sda, logical block 0, async page read
[   38.674756] Dev sda: unable to read RDB block 0
[   39.100212] usb 1-1: reset full-speed USB device number 2 using uhci_hcd
[   40.040269] usb 1-1: reset full-speed USB device number 2 using uhci_hcd

但是,如果我连接到 shell

,我可以看到 USB
$ adb root
$ adb shell
emulator:# lsusb
Bus 001 Device 001: ID 1d6b:0001
Bus 001 Device 002: ID ffff:5678

我有一个应用程序可以识别 USB 密钥何时连接并显示一条消息及其信息。我在一些问题中读到 USB 记忆棒安装在 /mnt/media_rw/[HEX-NUM] 中,但我在那个文件夹中什么也没有

emulator:/mnt/media_rw # ls
emulator:/mnt/media_rw # 

U盘真的挂载了吗?如果没有,我该怎么做? 谢谢

我运行模拟器是这样的,现在可以用了

./emulator @AVD_NAME -no-snapshot -qemu -device usb-ehci,id=ehci -device usb-host,bus=ehci.0,vendorid=0xffff,productid=0x5678