如何为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配置。

跟着这些步骤:

  1. 设置android vars

    最初进入你家并按Ctrl + H它会显示隐藏文件现在查找.bashrc文件,用任何文本编辑器打开它然后将下面的行放在文件末尾:

     export ANDROID_HOME=/myPathSdk/android-sdk-linux export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools 
  2. 重启

  3. 使用设备进行调试

    听取连接:

     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直接触发更新