首页 文章

adb devices命令不起作用

提问于
浏览
85

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

我的问题:

  • adb devices >>> ????????????没有权限

  • sudo adb devices >>>> sudo:adb:未找到命令

  • 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:command not found” . 也许我的问题并非全部相关 . 无论如何,在这一点上,我认为我需要其他人的一些意见,因为我不相信我有路径问题或其他帖子中讨论的其他常见问题 .

EDIT: SOLVED 感谢EboMike和RivieraKid . 这实际上是两个不同的问题:

  • 上面的项目#2(sudo:adb:command not found)通过创建符号链接来解决,如下所示:
$ sudo ln -s /opt/android-sdk-linux_x86/platform-tools/adb /usr/local/sbin/adb

这让我可以像EboMike建议的那样使用this solution . 这样做是我的Moto Droid所必需的 . (然而,我的Viewsonic G-Tablet不需要将adb作为sudo运行 . )

  • 我的其他两个项目是通过实现像RivieraKid建议的udev规则来解决的(来自link) .

9 回答

  • 22

    我刚刚遇到同样的情况,工厂数据重置对我来说效果很好 .

  • 13

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

    你没有这样做的任何特殊原因?回答这个问题 - 是的! udev规则通知Ubuntu您的设备是什么,并允许用户空间工具访问它 .

    如果没有正确遵循instructions,您将无法使用adb .

    但是,考虑到这一点,你没有说你正在使用的是什么版本的Ubuntu但我遇到了10.10的问题 - 如果你需要我发布我的规则文件的内容,请告诉我 .

    唐't worry about running adb via sudo, you don' t需要它 . udev规则中的 MODE="0666" 允许您以任何用户身份访问设备 .


    编辑:

    不要忘记重新加载规则:

    sudo udevadm control --reload-rules
    

    编辑#2:

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

    sudo adb kill-server
    

    我在这里使用了sudo,因为这样可以保证adb被杀死,这是官方支持的停止服务器的方法 . 它会在下次使用adb时自动重启,但这次使用的环境正确 .

  • 87

    以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
    
  • 2

    您需要以root身份重新启动adb服务器 . 见here .

  • 3

    在我的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
    

    您还必须检查用户的成员身份到 plugdev -group .

  • 2

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

    查看udevmonitor --env的输出,然后是输出,可能是有益的

    udevinfo -a -p <DEVICE_PATH_AS_REPORTED_BY-udevmonitor>
    
  • 1

    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
    
  • 0

    请注意,像IntelliJ IDEA这样的IDE往往会启动自己的adb-server .

    即使手动终止服务器并使用sudo运行新实例也无济于事,除非您让IDE终止服务器本身 .

  • -3

    我通过覆盖系统规则修复了我的debian GNU / Linux系统上的这个问题:

    mv  /etc/udev/rules.d/51-android.rules /etc/udev/rules.d/99-android.rules
    

    我使用链接到的文件中的内容:http://rootzwiki.com/topic/258-udev-rules-for-any-device-no-more-starting-adb-with-sudo/

相关问题