android 虚拟机访客上的adb设备未列出的设备

93ze6v8z  于 2023-11-15  发布在  Android
关注(0)|答案(4)|浏览(158)

为什么我的Android手机没有被adb devices列出?
我按照https://developer.android.com/studio/run/device中描述的说明进行操作,但ADB仍然找不到我的设备。我的用户已经是plugdev组的成员。我还尝试杀死并重新启动adb服务器。
我在VirtualBox机器上运行Debian Stretch。Debian可以看到我的设备,但adb不能。

eduardo@debian:~$ lsusb

Bus 001 Device 002: ID 1004:633e LG Electronics, Inc. GZ Android Phone [MTP mode]
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub    
Bus 002 Device 002: ID 8oee:0021 VirtualBox USB Tablet    
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

eduardo@debian:~$ ls -l /etc/udev/rules.d/51-android.rules

-rw-r-r- 1 root root 4611 Sep 5 15:25 /etc/udev/rules.d/51-android.rules

eduardo@debian:~$ grep 1004 /etc/udev/rules.d/51-android.rules

SUBSYSTEM=="usb", ATTRfidVendor1=="1004", MODE="0666", GROUP="p1ugdev"

eduardo@debian:~$ adb devices

List of devices attached

eduardo@debian:~$

字符串

vdzxcuhz

vdzxcuhz1#

在虚拟化环境中使用adb的简单方法是在主机上作为远程系统运行adb server,并在访客系统中运行adb客户端,而不考虑特定的平台。请参阅my answer to another question here
虽然服务器和客户端都可以完全在客户机系统内部运行,但要做到这一点,通常需要将整个USB控制器传递到客户机系统中。

llmtgqce

llmtgqce2#

我做了一个解决问题的变通方法。它并不完美,但它很有效。
1.禁用桥接USB到VirtualBox机器
1.在主机上安装platform-tools并运行adb devices
1.在设备屏幕上授权您的计算机
1.在虚拟机中创建一个TCP隧道,将本地端口5037重定向到主机5037端口:
ssh -L 5037:10.0.2.2:5037 localhost -N -f
我不会将此标记为正确答案,因为我的Guest ADB仍然看不到我的设备

gfttwv5a

gfttwv5a3#

它的工作时,我改变了我的设备USB充电模式.
参考:https://askubuntu.com/a/632668

acruukt9

acruukt94#

出现此问题的原因很可能是当请求将设备重定向到VM时,MTP设备仍在使用。您没有指定主机操作系统,因此我将描述在Linux主机上验证此操作系统的步骤。
只需输入lsof /dev/libmtp-{number}(其中{number}是分配给设备的内核号),以列出具有设备文件的打开文件描述符的进程。如果您有多个设备,则可以通过cat /sys/bus/usb/devices/{number}/product找到设备的名称。输出应显示设备正在使用的指示(例如gnome环境中的gvfsd-mtp).(如果没有列出进程,那么你的问题似乎是一个bug,可能有各种原因。)
解决方案是删除所有使用该设备的进程。这可以通过简单地使用kill {PID}杀死进程来完成,其中{PID}是从上一个lsof命令的输出中获取的进程ID。注意:杀死进程只在自己的责任。但在gvfsd-mtp(gnome环境)的情况下,您可以使用gio mount -u /run/user/1000/gvfs/mtp\:host\={manufacturer}_{product}_{serial}卸载MTP设备。

相关问题