adb 在 Ubuntu 17.04 上没有权限

Nad*_*her 76 android adb android-studio 17.04

当我尝试:

$ adb devices
Run Code Online (Sandbox Code Playgroud)

我得到结果:

List of devices attached 
????????????    no permissions
Run Code Online (Sandbox Code Playgroud)

问题是什么?

在 Ubuntu 16.04 机器上尝试过,效果很好。尝试了 7.1.1 设备,它也运行良好。

小智 92

有同样的问题。确保设备 USB 模式 充电已经解决了这个问题。

  • 同样在这里,我修改了 Udev 规则但没有结果,将 USB 更改为文件共享和 presto。在以前的 ubuntu 版本中,该设备不需要 udev 规则或特定的 USB 模式。 (7认同)
  • 这应该是正确答案(不是 adb restart server) (4认同)
  • 对我来说正确答案。 (2认同)
  • 为我解决了 Fedora 上的问题,谢谢! (2认同)

Sum*_*ukh 89

尝试重新启动 Adb 服务器。

sudo adb kill-server
Run Code Online (Sandbox Code Playgroud)

进而

sudo adb start-server
Run Code Online (Sandbox Code Playgroud)

然后连接您的设备打开调试并键入

adb devices
Run Code Online (Sandbox Code Playgroud)

  • 这确实有效......有点。在我这样做之后,确实,运行“adb devices”现在会显示设备(并且我确实得到了指纹对话框)。但是,它仍然不适用于 android studio。此外,当我运行 android studio,然后从控制台运行 `adb devices` 时,我得到一个“adb 服务器已过期”并且 adb 服务器重新启动。之后,我再次进入“无权限”情况。 (2认同)

Pau*_*aul 53

udev 很可能错误地添加了您的设备。我也遇到了这个问题并遇到了一个相对简单的解决方案。

在 lsusb 中查找您的设备

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2b Intel Corp. 
Bus 001 Device 002: ID 05c8:03a2 Cheng Uei Precision Industry Co., Ltd (Foxlink) 
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Run Code Online (Sandbox Code Playgroud)

在这种情况下的兴趣点:

Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Run Code Online (Sandbox Code Playgroud)

查看对应的设备文件

$ ls -l /dev/bus/usb/001/006
Run Code Online (Sandbox Code Playgroud)

可能你会看到类似的东西

crw-rw-r-- 1 root root 189, 5 Sep  8 21:47 /dev/bus/usb/001/006
Run Code Online (Sandbox Code Playgroud)

这意味着设备文件将由用户 root 和组 root 拥有,这就是为什么 adb 可以以 root 身份访问它,但不能以标准用户身份访问它。

这可以通过创建一个新的 udev 规则来解决 - 我曾经/etc/udev/rules.d/51-android.rules- 将设备添加到组中plugdev,adb 已经假定您是其中的成员(您应该是,检查使用id

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0660", 
GROUP="plugdev", SYMLINK+="android%n"
Run Code Online (Sandbox Code Playgroud)

**记住将 ATTR{idProduct}=="4ee7" 替换为您在第一步中找到的您自己的产品 ID。**(如果您的供应商不是 Google Inc.,也将供应商 ID 替换为 lsusb 中冒号前的那个)。

现在只需拔下您的设备并将其重新插入(udev 应自动响应新文件)和 tadaa:

$ adb devices
List of devices attached 
YC873P0G    device
Run Code Online (Sandbox Code Playgroud)

来源:为 USB 调试 Android 设备添加 udev 规则 - Janos Gyerik

  • 谢谢@Paul 它帮助了我。很好地解释了原因。我认为还需要重启 udev 服务。 (2认同)

小智 5

电话更改 USB 模式对我来说很有效。(我将其设置为File Transfer。)