问题描述
我正在运行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的root G-Tab。
我查看了以下相关帖子:
我尝试了大多数(不是全部)建议,但我无法解决我的问题。我没试过的东西似乎不合适。我会感谢一些提示,我会继续排除故障。
我没有尝试的一件事是编辑/etc/udev/rules.d/70-android.rules。这可能是问题吗?我看不出这会导致“sudo:adb:command not found”。也许我的问题并非全部相关。无论如何,在这一点上,我认为我需要来自其他人的一些意见,因为我不相信我有路径问题或其他帖子中讨论的其他常见问题。
编辑:解决了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)。
最佳解决方法
One thing I didn’t try was editing /etc/udev/rules.d/70-android.rules. Is that likely to be the issue?
你没有这样做的任何特殊原因?回答这个问题 – 是的! udev规则通知Ubuntu您的设备是什么,并允许user-space工具访问它。
如果没有正确使用instructions,您将无法使用adb。
考虑到这一点,你没有说你正在使用的是什么版本的Ubuntu但是我遇到了10.10的问题 – 如果你需要我发布我的规则文件的内容,请告诉我。
不要担心通过sudo运行adb,你不需要它。 udev规则中的MODE="0666"
允许您以任何用户身份访问设备。
编辑:
不要忘记重新加载规则:
sudo udevadm control --reload-rules
编辑#2:
正如@Jesse Glick正确指出的那样,如果adb已经在守护进程模式下运行,你还需要重新启动它才能使其工作:
sudo adb kill-server
我在这里使用过sudo,因为这样可以保证adb会被杀死,这是官方支持的停止服务器的方法。它会在下次使用adb时自动重启,但这次使用的环境正确。
次佳解决方法
您需要以root身份重新启动adb服务器。请参阅here。
第三种解决方法
在我的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。
第四种方法
我读过的每个答案都表明了SUBSYSTEM=="usb"
。但是,我(也许是古老的)udev需要将其更改为DRIVER=="usb"
。最后我可以将adb服务器作为non-root用户运行… yay。
查看udevmonitor –env的输出,然后是输出,可能是有益的
udevinfo -a -p <DEVICE_PATH_AS_REPORTED_BY-udevmonitor>
第五种方法
请注意,像IntelliJ IDEA这样的IDE往往会启动自己的adb-server。
甚至手动查杀服务器并使用sudo运行新实例也无济于事,除非您让IDE终止服务器本身。
第六种方法
以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