adb在Ubuntu 17.04上没有权限


48

当我尝试:

$ adb devices

我得到结果:

List of devices attached 
????????????    no permissions

问题是什么?

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


尝试sudo adb devices。如果这很好用,但是从内存来看,我不必是root用户即可检查所连接的设备。
shmink

1
它不能与sudo一起使用,但可以用root登录。问题是android studio仅从非根会话执行adb,并且用jksudo运行它不会识别我的文件。
Nadav Tasher

我已经在android studio上找到了相同的东西,并且一般来说是由jetbrains制造的。当您安装android studio时,您是以root身份执行的吗?
shmink

以root身份安装到/ usr / local /并更改为777 -R,而不是以root身份运行,因此它将识别设置和sdk。
Nadav Tasher

如何以root身份运行它,并仅适当更改设置和sdk。
shmink

Answers:


64

尝试重新启动Adb服务器。

sudo adb kill-server

接着

sudo adb start-server

然后连接设备,打开“调试”并输入

adb devices

2
这确实有效.. 确实,执行adb devices完此操作后,现在运行即可显示设备(并且确实显示了指纹对话框)。但是,它仍然不适用于android studio。此外,当我运行android studio并adb devices从控制台运行时,出现“ adb服务器已过期”并且adb服务器重新启动的情况。之后,我再次进入“没有权限”的情况。
Shade

这是行不通的。adb设备什么也没显示,并且耳机再也不会请求权限。
Tyguy7

62

有同样的问题。确保设备USB模式不是 仅充电已解决。


5
同样在这里,我修改了Udev规则,但没有结果,将USB更改为文件共享并保存。在先前的ubuntu版本中,该设备不需要udev规则或特定的USB模式。
Fco P.

3
这应该是正确的答案(不是adb重新启动服务器)
RumburaK,

1
为我正确答案。
Alvaro Gutierrez Perez

1
应该不是正确的答案,但可以。
Uzumaki D. Ichigo

1
是的,这是正确的答案。

39

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

在这种情况下的兴趣点:

Bus 001 Device 006: ID 18d1:4ee7 Google Inc.

签出相应的设备文件

$ ls -l /dev/bus/usb/001/006

您可能会看到类似

crw-rw-r-- 1 root root 189, 5 Sep  8 21:47 /dev/bus/usb/001/006

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

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

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0660", 
GROUP="plugdev", SYMLINK+="android%n"

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

现在,只需拔下设备,然后将其重新插入(udev应该会自动响应新文件)和tadaa:

$ adb devices
List of devices attached 
YC873P0G    device

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


1
这个答案解决了我的问题。很好,谢谢。
alexmeia

1
谢谢@保罗它帮助了我。很好地解释了原因。我认为也需要重启udev服务。
加根

如果您不想将sudo用于不需要使用sudo的东西,这绝对是正确的解决方案
aholt

这应该是公认的答案,因为它是正确的答案。评分最高的答案实际上只是一种解决方法。
乔尔·克罗斯

这为我解决了。它昨天没有规则就可以工作,但是在ubuntu上安装更新后,它停止工作了,我必须这样做。
simernes

2

为了扩展Sumeet Deshmukh的答案,如果您只想adb从控制台使用命令,那么他的方法通常可以正常工作。

但是,Android Studio显然会启动其自己的adb服务器,从而杀死了我们的服务器。这意味着在我们使用sudo终止/启动服务器后,Studio会重新启动它,这将导致启动情况-没有权限。

解决方案是先启动Studio,然后执行服务器的启动/停止。这样做后,我设法使Nexus 5X在Studio中显示为有效的运行目标。

这不是最好的情况(每次启动Studio时都必须运行命令),但这可以快速而肮脏的方式实现。如果我找到更永久的解决方案,则将更新此答案。


非常感谢您,尽管它是系统更新(通过电话)和Studio更新修复的错误。
Nadav Tasher

2

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


2

不要遵循建议使用sudosudo adb start-server)的解决方案!这以根用户(管理员)身份运行adb,而不应该那样运行!!!这是一个坏的解决方法

以root身份运行的所有内容都可以在您的系统中执行任何操作,如果它创建或修改文件可以将其权限更改为仅由root使用。再次,不要!

做正确的事情是设置系统使用户具有的权限,请查看本指南中我写了一篇关于如何正确地做到这一点。


2

我将自己添加到plugdev组中并重新启动计算机后,对我而言,它只是为了确保所做的更改在我的所有Shell会话中均生效之后,对我而言并不起作用。然后,我发现其中没有51-android.rules文件,/etc/udev/rules.d因此必须执行以下操作来解决此问题:

# Here the vendor ID is of Google
$ echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0660", GROUP="plugdev"' | sudo tee —append /etc/udev/rules.d/51-android.rules
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
$ sudo udevadm control --reload-rules
$ sudo service udev restart

我还必须拔出并重新插入我的Android设备。


这对我也不起作用……
Tyguy7

1

您需要在Android设备上提供权限。转到设置>开发人员选项。尝试关闭USB调试,然后再次打开。拔下电缆,然后重新连接。另外,尝试从“开发人员”选项中删除所有保存的授权。现在,它应该通过手机上的提示来请求调试许可。接受。


不起作用,我已经尝试过了,如果有关系,我正在使用android 7.1.2,并且在运行7.1.1的另一台设备上它确实起作用了。
Nadav Tasher

试图删除所有主机授权?之后重启?
乔尔·马修

没有重启。我会尽力告诉您是否可行。
Nadav Tasher

如果有效,您可以接受答案。
乔尔·马修

今天晚些时候进行病检
Nadav Tasher


0

我不知道为什么这样做,但这是唯一对我有用的解决方案

查找运行adb的位置(如果您像我一样,则安装了多个版本)。请记住,像react native这样的工具可能会决定随机使用其他版本,以使您的生活更艰难。对我来说是~/Android/Sdk/platform-tools/adb。因此,我将运行:

sudo chown root:YOUR_USERNAME ~/Android/Sdk/platform-tools/adb
sudo chmod 4550 ~/Android/Sdk/platform-tools/adb

Android工具非常烦人。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.