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

Ubuntu虚拟机中adb devices无法识别设备求助

我来帮你一步步排查这个虚拟机adb识别设备的问题,毕竟跨系统+虚拟机的场景,确实容易踩一些USB转发和权限的坑😉

1. 先确认虚拟机有没有抓到你的USB设备

这是最基础的一步——如果虚拟机都没拿到设备控制权,adb再怎么折腾也没用:

  • 打开Ubuntu虚拟机的顶部菜单栏,找「设备」→「USB」,看看列表里有没有你的安卓设备型号。如果有,确保它是勾选状态;如果没有,先在Windows里断开设备,重新插上后再回到虚拟机的USB菜单里选择捕获设备。
  • 要是连USB菜单里都看不到设备,去虚拟机的「设置」→「USB」选项,确认已经启用了USB 3.0(xHCI)控制器——很多新安卓设备需要这个协议才能被虚拟机识别。

2. 检查Ubuntu的adb权限问题

就算设备被捕获了,Ubuntu普通用户可能没权限访问USB设备,导致adb识别失败:

  • 先试试用sudo adb devices运行命令,如果能正常列出设备,那百分百是权限问题。
  • 解决权限问题的步骤:
    1. 先通过lsusb命令找到你设备的Vendor ID(比如小米设备是0x2717,格式是0xXXXX)。
    2. 创建udev规则文件:sudo nano /etc/udev/rules.d/51-android.rules
    3. 写入以下内容(把你的Vendor ID替换成刚才查到的内容):
      SUBSYSTEM=="usb", ATTR{idVendor}=="你的Vendor ID", MODE="0666", GROUP="plugdev"
      
    4. 保存退出后,刷新udev规则:sudo udevadm control --reload-rules && sudo udevadm trigger
    5. 把当前用户加入plugdev组:sudo usermod -aG plugdev $USER
    6. 重启Ubuntu或者重新登录用户,再试adb devices

3. 关于你用的autossh命令(连接被拒的原因)

你尝试的端口转发命令是想复用Windows主机的adb连接,但出现connection refused大概率是这几个问题:

  • Windows主机的adb服务器没启动?先在Windows的命令行里跑adb start-server,确保服务器在运行。
  • Windows防火墙挡住了5037端口?可以临时关闭防火墙试试,或者在Windows防火墙里添加一条允许5037端口入站的规则。
  • 虚拟机的网络模式不对?10.0.2.2是NAT模式下主机的默认IP,如果你的虚拟机用的是桥接模式,得换成Windows主机的实际局域网IP(比如192.168.1.XXX)。

4. 其他快速排查小技巧

  • lsusb命令在Ubuntu里查设备:如果能看到你的安卓设备,说明硬件层面已识别,问题在adb或权限;如果看不到,回到第一步解决USB捕获问题。
  • 重启adb服务器的时候,尽量用sudo adb kill-server && sudo adb start-server——普通用户启动adb可能因为权限问题失败。
  • 检查Ubuntu和Windows的adb版本是否一致:版本不兼容也会导致识别异常,尽量用同一个版本的Android SDK Platform Tools。

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

火山引擎 最新活动