Virtualbox adb device找不到设备解决办法

电脑上是windows系统,但是本人喜欢ubuntu系统,搞双系统又觉得麻烦,所以就装了个virtualbox,里面搞了个ubuntu。

用这个ubuntu系统来开发andorid的应用,遇到一个问题,就是在Virtualbox的右下usb图标里面已经探测到了我的android设备“18d1”(如果没有探测到,请确定android设备打开了adb调试开关以及授权这台PC来调试Android)。但是adb device里面却始终没有设备,经过一番折腾总算知道是什么原因了。下面提供排查解决的步骤:

  • 1 首先输入lsusb来看看你的Android设备是否有被ubuntu识别到,如果没有,则继续第二步骤。
  • 2 在/etc/udev/rules.d/51-Android.rules里面添加如下(如果没有该文件可以创建一个):
SUBSYSTEM=="USB",ATTR{idVendor}=="18d1",MODE="0666",GROUP="plugdev"
  • 3 输入如下指令:sudo udevadm control --reload-rules以及sudo service udev restart

经过2-3的操作,一般情况lsusb就会出现你的设备。但是这个时候adb device依然有可能发现不了设备。

注意:我搜索了下网上的资料,很多资料说在~/.android/这个里面搞个什么adb_usb.ini。可以很负责的告诉大家,屁用没有。不要去尝试了。

  • 如果遇到这种情况输入dmesg|grep usb来看看内核和驱动的日志:

发现出现:“device is not authorized for usage”这种跟在你usb设备加载的日志后面。说明usb设备被ban了。到底被谁ban了?去google了上述的关键字,发现有个老外也提出了相同的问题,但是他后来纠正了自己的错误,说是自己错误的启用了usbguard服务。

我查看了下本机的服务,发现usbguard确实在运行,有三种方法解决:

1 干掉usbguard(永久):

sudo systemctl disable usbguard
sudo systemctl stop usbguard

2 临时禁用:sudo systemctl stop usbguard

3 配置usbguard允许android设备访问

#获取设备id
usbguard list-devices
#允许该设备
sudo usbguard allow-device <device_id>
#重新启动usbguard
sudo systemctl start usbguard

做完这些adb kill-server,adb start-server以后基本就可以找到设备了。

### 解决方案 在 Ubuntu 系统中使用 ADB Shell 时遇到无法设备的问题,通常是由驱动程序配置不正确或权限不足引起的。以下是可能的原因以及解决方案: #### 可能原因及对应解决方法 1. **USB 驱动未正确安装** 如果 USB 设备未被识别,则可能是由于缺少必要的 udev 规则文件所致。可以通过创建自定义的udev规则来解决问题[^2]。 创建一个新的 udev 文件 `/etc/udev/rules.d/51-android.rules` 并添加以下内容: ```bash SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", MODE="0666", GROUP="plugdev" ``` 将 `xxxx` 替换为您的 Android 设备厂商 ID (可通过命令 `lsusb` 查)。之后重新加载 udev 规则并重启服务: ```bash sudo service udev reload ``` 2. **ADB 权限问题** 默认情况下,某些 Linux 发行版可能会阻止非特权用户访问 USB 设备。可以尝试通过更改目录权限的方式解决此问题: ```bash sudo chmod -R 777 /dev/bus/usb/ ``` 此外,在运行 ADB 命令之前,请确保已启动 ADB 服务器: ```bash adb kill-server && adb start-server ``` 3. **目标平台版本兼容性** 若您正在构建特定的目标环境(如 Android 1.5),而当前使用的 SDK 或 NDK 版本较新,则可能导致不兼容的情况发生。建议验证所选工具链是否支持该版本的操作系统[^1]。 4. **调试模式启用状态** 确认连接到计算机上的手机已经打开了开发者选项中的“USB 调试”。如果尚未开启,请进入设置菜单手动激活它。 5. **网络共享方式下的虚拟机部署场景处理** 对于那些利用 VirtualBox 或 VMware 运行 guest OS 的情况来说,还需要额外注意主机与客户操作系统之间的端口映射关系调整[^3]。 以上措施应该能够有效缓解大多数关于不到安卓物理装置的情形;但如果依旧存在困难的话,则需进一步排查具体错误日志信息以便定位根本源头所在。 ```python import os os.system('adb devices') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值