adb devices命令不起作用


86

我正在运行Ubuntu 10.10 64位。我安装了ia32-libs以及Android Debug Bridge版本1.0.26。

我的问题:

  1. adb devices>>> ???????????? 没有权限
  2. sudo adb devices >>>> sudo:adb:找不到命令
  3. adb shell >>>错误:设备权限不足

我想这些都有关。这是相关信息。

$ echo $PATH
/home/me/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/android-sdk-linux_x86/tools:/opt/android-sdk-linux_x86/platform-tools

$ which adb
/opt/android-sdk-linux_x86/platform-tools/adb

$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
????????????    no permissions

$ sudo adb devices
sudo: adb: command not found

$ adb shell
error: insufficient permissions for device

使用运行CM6.1的植根Moto Droid和运行基于CM7的ROM植根的G-Tab,可以得到相同的结果。

我已经审查了以下相关职位:

我尝试了大多数(不是全部)建议,但无法解决问题。我没有尝试过的东西似乎不合适。我将不胜感激,并且会继续进行故障排除。

我没有尝试过的一件事是编辑/etc/udev/rules.d/70-android.rules。这可能是问题所在吗?我看不到这将如何导致“ sudo:adb:命令未找到”。也许我的问题并不都相关。无论如何,在这一点上,我认为我需要其他人的帮助,因为我不认为自己存在路径问题或其他帖子中讨论的其他常见问题。

编辑:由于EboMike和RivieraKid解决了。这实际上是两个不同的问题:

  1. 上面的项目2(sudo:adb:命令未找到)通过以下方式建立符号链接来解决:

    $ sudo ln -s /opt/android-sdk-linux_x86/platform-tools/adb /usr/local/sbin/adb
    

    这样,我便可以按照EboMike的建议进行操作并使用此解决方案。这样做对于我的Moto Droid是必需的。(正如须藤执行adb要求我的优派G-平板电脑,但是。)

  2. 通过执行RivieraKid建议的udev规则,可以解决我的其他两个问题(从此链接开始)。



项目#1确实帮助了我。不确定项目2
Francisco Quintero

Answers:


87

我没有尝试过的一件事是编辑/etc/udev/rules.d/70-android.rules。这可能是问题所在吗?

您为何不这样做的任何特定原因?要回答这个问题-是的!udev规则可告知Ubuntu,您的设备是什么,并允许用户空间工具访问它。

如果没有正确按照说明进行操作,将无法使用adb 。

考虑到这一点,您不会说您使用的是哪个版本的Ubuntu,但是10.10出现了问题-让我知道您是否需要我发布规则文件的内容。

不必担心通过sudo运行adb,您不需要它。在MODE="0666"从udev规则允许您使用该设备的任何用户。


编辑:

不要忘记重新加载规则:

sudo udevadm control --reload-rules

编辑2:

正如@Jesse Glick正确指出的那样,如果adb已经在守护程序模式下运行,则还需要重新启动它才能使其正常工作:

sudo adb kill-server

我在这里使用sudo,因为这将确保adb被杀死,这是停止服务器的正式支持方法。下次使用adb时,它将自动重新启动,但是这次使用正确的环境。


1
谢谢你的链接。不知道我怎么会错过那些说明是官方的事实。我认为人们正在这样做,这是一种解决方法。我找到了Viewsonic GTablet的供应商代码,并添加了udev规则,现在可以使用了!谢谢。
MountainX

1
由于某种原因,我无法让Motorola Droid与adb设备一起显示。现在,我可以显示GTab和一个仿真器,但不能显示Droid。
MountainX

看上面。以root身份运行adb会导致Moto Droid出现。
MountainX

$ cat /etc/udev/rules.d/51-android.rules SUBSYSTEM ==“ usb”,SYSFS {idVendor} ==“ 22b8”,MODE =“ 0666” SUBSYSTEM ==“ usb”,SYSFS {idVendor} = =“ 0955”,MODE =“ 0666”
MountainX

1
adb如果您之前运行过守护程序,则需要重新启动它。
Jesse Glick 2014年

22

您需要以root用户身份重新启动adb服务器。看这里


没用。详细信息: me@desktop:/opt/android-sdk-linux_x86/platform-tools$ sudo adb kill-server sudo: adb: command not found me@desktop:/opt/android-sdk-linux_x86/platform-tools$ adb kill-server me@desktop:/opt/android-sdk-linux_x86/platform-tools$ sudo adb start-server sudo: adb: command not found
MountainX

adb不在您的超级用户路径中。输入which adb以找出它所在的路径,然后将其添加到root的路径。
EboMike

希望你能读懂。(我不知道如何格式化注释以包括换行符。)adb IS在我的根用户路径中。我在原始帖子中粘贴了哪个adb命令。路径是/ opt / android-sdk-linux_x86 / platform-tools / adb。$ sudo -s root @ desktop:#echo $ PATH / usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin:/ usr / X11R6 / bin:/ opt / android-sdk-linux_x86 / tools:/ opt / android-sdk-linux_x86 / platform-tools
MountainX

1
这是一件奇怪的事。从“哪个adb”获得不同的结果,具体取决于是以root用户运行还是以sudo运行。这是输出$ sudo其中adb $
MountainX

当您以root身份运行adb时,请指定完整路径。
EboMike 2011年

13

在我的Gentoo / Funtoo linux系统上,我遇到类似的问题:

我总是得到不正确的设备描述和不足的权限:

# sudo ./adb devices
List of devices attached 
????????????    no permissions
# ./adb usb
error: insufficient permissions for device

对我来说,可以帮助Google提供howto。就我而言,我需要添加udev规则:

# cat /etc/udev/rules.d/51-android.rules 
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev" 

并设置文件系统权限

# chmod a+r /etc/udev/rules.d/51-android.rules

重新插入智能手机后,可以成功访问手机,它现在也出现在Eclipse的Android设备选择器中:

# sudo ./adb devices
List of devices attached 
3XXXXXXXXXXXXXC device
# sudo ./adb usb
restarting in USB mode

您还必须检查您的用户是否属于plugindev -group。


3

我读过的每个答案都表示SUBSYSTEM=="usb"。但是,我的(也许是古老的)udev需要将此更改为DRIVER=="usb"。最后,我可以以非root用户身份运行adb服务器。

查看udevmonitor --env的输出,然后是的输出,可能会很有帮助。

udevinfo -a -p <DEVICE_PATH_AS_REPORTED_BY-udevmonitor>

如果udevmonitorudevinfo没有在你的机器上,使用存在udevadm monitorudevadm info -a -p ...代替。
Ash Ash

2

请注意,像IntelliJ IDEA这样的IDE往往会启动自己的adb服务器。

即使手动终止服务器并使用sudo运行新实例,在您使IDE终止服务器本身之前也无济于事。


2

以root身份重新启动adb服务器对我有用。看到:

derek@zoe:~/Downloads$ adb sideload angler-ota-mtc20f-5a1e93e9.zip 
loading: 'angler-ota-mtc20f-5a1e93e9.zip'
error: insufficient permissions for device
derek@zoe:~/Downloads$ adb devices
List of devices attached
XXXXXXXXXXXXXXXX    no permissions

derek@zoe:~/Downloads$ adb kill-server
derek@zoe:~/Downloads$ sudo adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
derek@zoe:~/Downloads$ adb devices
List of devices attached
XXXXXXXXXXXXXXXX    sideload

我也是:具有HTC Sensation的Linux Mint Serena 18.1。Noob警报:我已经忙了2天了,所以几乎可以肯定这些东西了
Aethelbald


0

HTC One m7运行新鲜的Cyanogenmod 11。

手机已连接USB并绑定了我的数据连接。

然后我得到这个惊喜:

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb shell
error: insufficient permissions for device

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb devices
List of devices attached
????????????    no permissions

解决方案:关闭电话上的网络共享。

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb devices
List of devices attached
HT36AW908858    device

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.