如何为Android设备配置ADB访问?
我正在使用Ubuntu 12.10并且我安装了Android SDK,在我的用户.bashrc
设置它的路径并且它可以工作。
问题是我的手机需要根据权限运行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
这不会以超级用户身份出现。 对不起,如果是误会。
请首先阅读以下内容: 如何设置Android ADB?
配置USB访问
首先,如果已相应地设置了权限,则不需要root权限即可运行ADB。 AOSP站点提供了为Pixel / Nexus设备配置USB访问的示例。 您可以对非Nexus设备使用以下方案:
SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", ATTR{idProduct}=="xxxx", MODE="0600", OWNER=""
可以使用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/
我使用来自中国的平板电脑(一些奇怪的制造商)遇到了同样的问题。
除了/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
断开连接并重新连接设备,还需要在终端上执行命令;
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配置。
跟着这些步骤:
-
设置android vars
最初进入你家并按Ctrl + H它会显示隐藏文件现在查找
.bashrc
文件,用任何文本编辑器打开它然后将下面的行放在文件末尾:export ANDROID_HOME=/myPathSdk/android-sdk-linux export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
-
重启
-
使用设备进行调试
听取连接:
adb -a
连接您的Android设备并对其进行授权:
cordova run android --device
配置USB访问
建议的方法是在/etc/udev/rules.d/51-android.rules
创建一个文件。
请输入终端:
wget -S -O - http://source.android.com/source/51-android.txt | sed "s//$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules
这些新规则将在下次插入设备时生效。因此可能需要拔下设备并将其重新插入计算机。
试试这个命令: sudo tools/android update sdk --no-ui
SDK自述文件:
欢迎使用Android SDK! Android SDK存档最初仅包含基本SDK工具。 它不包含Android平台或任何第三方库。 事实上,它甚至没有开发应用程序所需的所有工具。 要开始开发应用程序,您必须使用SDK Manager安装Platform-tools和至少一个版本的Android平台。 平台工具包含定期更新的构建工具,以支持Android平台中的新function(这就是它们与基本SDK工具分开的原因),包括adb,dexdump等。 要安装Platform-tools,Android平台和其他附加组件,您必须具有Internet连接,因此如果您计划在离线时使用SDK,请确保在线时下载必要的组件。 要启动SDK Manager,请执行程序“android”。 从命令行,您还可以通过执行:
tools/android update sdk --no-ui
直接触发更新