配置 USB 访问

配置 USB 访问

我正在使用 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.rulesudev 规则如下所示:

# 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

这些新规则将在下次插入设备时生效。因此可能需要拔下设备并将其重新插入计算机。

相关内容