首页 > 技术文章 > ubuntu linux adb devices no permissions解决办法

hanshuai 2018-08-21 15:29 原文

  最近在调试安卓手机时老是失败,问题如下所示  

han@ubuntu:~/project/zero_app$ adb devices
List of devices attached
664768297cf5    no permissions (user in plugdev group; are your udev rules wrong?); see [http://developer.android.com/tools/device.html]

  

  在网上查资料得知,安卓手机连接到电脑开发,在windows环境下,需要为adb安装usb驱动,每个手机厂商一般提供的对应的windows usb驱动程序,咱们下载安装之后可以连接了.在mac os环境下,只要你数据线不坏就行,插着就不用管了(是不是很方便).

  最后来说下在ubuntu linux环境下,则需要为开发中的每一种设备添加一个包含usb配置的udev规则文件.在规则文件下,每一个设备制造商都提供一个唯一的供应商id属性所标识.我们需要手动编辑这个文件(没有就创建),将SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev" (本例中,供应商id为HTC厂商的id: 0bb4, 读写权限为: 0666, GROUP则定义那个Unix组拥有设备节点),添加到规则文件中去:

han@ubuntu:~$ sudo gedit /etc/udev/rules.d/51-android.rules

  我在android developer没有找到小米,很是伤心...后来查到,linux下有个命令 lsusb 可以查看usb设备和他的属性.

han@ubuntu:~$ lsusb
Bus 002 Device 002: ID 0451:8046 Texas Instruments, Inc. 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 413c:301a Dell Computer Corp. 
Bus 001 Device 003: ID 413c:2113 Dell Computer Corp. 
Bus 001 Device 009: ID 18d1:4ee7 Google Inc. 
Bus 001 Device 002: ID 0451:8044 Texas Instruments, Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

  下面介绍以我的小米为例,介绍下输出的含义(第一个)

  • Bus 002: 指明设备连接到哪条总线
  • Device 002: 表明这是连接到总线上的第二台设备
  • ID 0451:8046: 设备的id, 0451 就是我们需要的供应商id
  • Texas Instruments, Inc: 生产商名字,这个是德州仪器

  规则文件修改后,执行

chmod a+r /etc/udev/rules.d/51-android.rules

  最后,重新拔插下手机,命令行输入adb devices

han@ubuntu:~/project/zero_app$ adb devices
List of devices attached
664768297cf5    device

  好了,大功告成.

推荐阅读