当前位置: 首页>>技术问答>>正文


如何为Android设备配置ADB访问?

, , , , ,

问题描述

我正在使用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 root帐户有关,表现不像我期望的那样。


我不明白的是以下内容:

这些不起作用:

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

这不会以超级用户身份出现。对不起,如果是误会。

最佳解决办法

请首先阅读以下内容:How do I set up Android ADB?


配置USB访问

首先,如果已相应地设置了权限,则不需要root权限即可运行ADB。 AOSP站点提供了用于Pixel /Nexus设备的Configuring USB Access示例。您可以对non-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/(系统范围)中为可执行文件添加符号链接,而不是modifying the path variable

mkdir ~/bin/
ln -s /opt/android-sdk-linux/platform-tools/adb ~/bin/

次佳解决办法

我使用来自中国的平板电脑(一些奇怪的制造商)遇到了同样的问题。

除了/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

并且检测到设备。

第三种解决办法

在我的情况下,而不是MTP模式,一些智能手机只需要设置为PTP模式,这与大多数需要我的Android Studio(v1.5.1)检测到MTP模式的设备不同。

因此,请务必首先尝试MTP和PTP模式,而无需花时间处理更复杂的Unix ADP配置并可能会损害它们。

在较新的设备中,您可以直接在Dev选项中选择它,而在较旧的设备中,它位于状态栏上的USB Connected Options中。

对我来说,Z5及以上版本的最新Sony Xperia设备无论USB模式如何都无法工作。也许我的Android Studio已经过时了,或者我需要使用Unix ADP配置。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2016.html,未经允许,请勿转载。