当我尝试:
$ adb devices
我得到结果:
List of devices attached
???????????? no permissions
问题是什么?
在Ubuntu 16.04机器上尝试过,效果很好。尝试了7.1.1设备,它也完美运行。
当我尝试:
$ adb devices
我得到结果:
List of devices attached
???????????? no permissions
问题是什么?
在Ubuntu 16.04机器上尝试过,效果很好。尝试了7.1.1设备,它也完美运行。
Answers:
尝试重新启动Adb服务器。
sudo adb kill-server
接着
sudo adb start-server
然后连接设备,打开“调试”并输入
adb devices
adb devices
完此操作后,现在运行即可显示设备(并且确实显示了指纹对话框)。但是,它仍然不适用于android studio。此外,当我运行android studio并adb devices
从控制台运行时,出现“ adb服务器已过期”并且adb服务器重新启动的情况。之后,我再次进入“没有权限”的情况。
有同样的问题。确保设备USB模式不是 仅充电已解决。
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
过)将设备添加到该组中来解决,该规则已由plugdev
adb假定您是该组的成员(应该这样做,请检查使用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
为了扩展Sumeet Deshmukh的答案,如果您只想adb
从控制台使用命令,那么他的方法通常可以正常工作。
但是,Android Studio显然会启动其自己的adb服务器,从而杀死了我们的服务器。这意味着在我们使用sudo终止/启动服务器后,Studio会重新启动它,这将导致启动情况-没有权限。
解决方案是先启动Studio,然后执行服务器的启动/停止。这样做后,我设法使Nexus 5X在Studio中显示为有效的运行目标。
这不是最好的情况(每次启动Studio时都必须运行命令),但这可以快速而肮脏的方式实现。如果我找到更永久的解决方案,则将更新此答案。
请不要遵循建议使用sudo
(sudo adb start-server
)的解决方案!这以根用户(管理员)身份运行adb,而不应该那样运行!!!这是一个坏的解决方法!
以root身份运行的所有内容都可以在您的系统中执行任何操作,如果它创建或修改文件可以将其权限更改为仅由root使用。再次,不要!
在做正确的事情是设置系统使用户具有的权限,请查看本指南中我写了一篇关于如何正确地做到这一点。
我将自己添加到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设备。
您需要在Android设备上提供权限。转到设置>开发人员选项。尝试关闭USB调试,然后再次打开。拔下电缆,然后重新连接。另外,尝试从“开发人员”选项中删除所有保存的授权。现在,它应该通过手机上的提示来请求调试许可。接受。
M0Rf30/android-udev-rules
GitHub社区维护了udev-rules
https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules
这是到目前为止我所见过的最完整的udev-rules列表,甚至比sudo apt-get install android-tools-adb
官方文档中当前推荐的列表还要多,请尝试一下。
转到设置>>维护>>存储。然后检查左上方菜单,然后单击USB计算机连接,然后更改为媒体设备(MTP)。
sudo adb devices
。如果这很好用,但是从内存来看,我不必是root用户即可检查所连接的设备。