我正在使用 Ubuntu 12.10,并且已经安装了 Android SDK,在我的用户中设置了它的路径.bashrc
并且它可以运行。
问题是我的手机需要以 root 身份运行 adb 才能获得权限,但使用 sudo 运行 adb 时出现以下错误:
sudo:adb:未找到命令
我尝试简单地使用sudo -E adb start-server
,但它不起作用。尝试将导出路径行添加到/root/.bashrc
并(在意识到它没有帮助后)添加到/etc/bash.bashrc
。
我记得我可以在我的 Arch Linux 上设置它,但我想我现在的问题是与 Ubuntu 根帐户有关的,它的行为不像我预期的那样。
我不明白的是:
这些不起作用:
martin@alyx:~$ sudo adb devices
sudo: adb: command not found
这样做(输入完整路径):
martin@alyx:~$ sudo /opt/android-sdk-linux/platform-tools/adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
CM7-Blade device
这不起作用(使用 -E 和 sudo):
martin@alyx:~$ sudo -E adb devices
sudo: adb: command not found
这有效(以 root 身份):
martin@alyx:~$ sudo su
root@alyx:/home/martin# adb devices
List of devices attached
CM7-Blade device
我现在完全糊涂了,如果能澄清一下如何为 sudo 设置路径或者如何解决我的问题,我将非常感激。
(并且请不要说 adb 不应该以 root 身份运行。)
提前致谢!
编辑: 通过要求 root 权限,我的意思是我需要它们,因为否则我会得到:
$ adb devices
List of devices attached
???????????? no permissions
超级用户不会发生这种情况。如果这是误解,我很抱歉。
答案1
请先阅读以下内容:如何设置 Android ADB?
配置 USB 访问
首先,如果你已设置了相应的权限,则无需 root 权限即可运行 ADB。AOSP 网站提供了以下示例配置 USB 访问适用于 Pixel/Nexus 设备。对于非 Nexus 设备,您可以使用以下方案:
SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", ATTR{idProduct}=="xxxx", MODE="0600", OWNER="<username>"
您可以使用lsusb
并搜索您的设备来获取供应商和产品 ID。(注意:该设备实际上是 Galaxy Nexus。)
$ lsusb | grep -i samsung
Bus 002 Device 103: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II]
所以我的/etc/udev/rules.d/51-android.rules
udev 规则如下所示:
# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="username"
如果需要,您可能希望对其他手机状态(如 fastboot)重复此操作。要使更改生效,请重新加载 udev ( sudo udevadm control --reload
) 或重新启动(推荐)。
使程序可用
代替修改路径变量我建议在~/bin/
(仅限用户)或/usr/local/bin/
(系统范围)中添加指向可执行文件的符号链接。
mkdir ~/bin/
ln -s /opt/android-sdk-linux/platform-tools/adb ~/bin/
答案2
我在使用一款来自中国(某个奇怪的制造商)的平板电脑时也遇到了同样的问题。
除了文件之外,我还/etc/udev/rules.d/51-android.rules
需要进行更改。~/.android/adb_usb.ini
在终端上运行以下命令;
sudo gedit ~/.android/adb_usb.ini
你的adb_usb.ini
文件看起来应该像这样:
# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
# USE 'android update adb' TO GENERATE.
# 1 USB VENDOR ID PER LINE.
# ie 0x2207
0x<!!!Your Vendor ID here!!!>
断开并重新连接设备,还需要在终端上运行以下命令;
adb kill-server
然后
adb start-server
并且该设备已被检测到。
答案3
在我的例子中,一些智能手机只需要设置为 PTP 模式而不是 MTP 模式,而大多数设备则需要我的 Android Studio(v1.5.1)检测到 MTP 模式。
因此,请务必先尝试 MTP 和 PTP 模式,而无需花时间进行更复杂的 Unix ADP 配置,以免损害它们。
在较新的设备中,您可以直接在开发选项中选择它,而在较旧的设备中,它可以在状态栏上的 USB 连接选项中选择它。
但对我来说,最新的索尼 Xperia Z5 及以上版本无论使用哪种 USB 模式都无法工作。也许我的 Android Studio 太旧了,或者我还需要深入研究 Unix ADP 配置。
答案4
配置 USB 访问
推荐的方法是在 创建一个文件/etc/udev/rules.d/51-android.rules
。
请在终端中输入:
wget -S -O - http://source.android.com/source/51-android.txt | sed "s/<username>/$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules
这些新规则将在下次插入设备时生效。因此可能需要拔下设备并将其重新插入计算机。