在Ubuntu系统中,默认情况下一般用户是不能直接访问USB设备的。因此,为了能够让Ubuntu连接上android手机,我们需要做一定的配置。以下介绍几种配置的方法。
方法一
android官方网站建议我们采用以下方法配置列表内容
- 新建规则文件
sudo touch /etc/udev/rules.d/51-android.rules
- 执行命令添加
wget -S -O - http://source.android.com/source/51-android.rules | sed "s/<username>/$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules
这种方式是android在其服务器中配置好了nexus系列手机的USB连接规则,然后通过命令获取并写入本地规则文件中。
但是有以下的缺点:只适合nexus系列手机,且断网情况下没法使用
方法二
单独配置每一台手机的USB规则
- 查看当前插入的手机设备信息
lsusb -v | less
Bus 001 Device 027: ID 18d1:4e30 Google Inc.
Couldn't open device, some information will be missing
Device Descriptor:
...idVendor 0x046d Google Inc.idProduct 0xc31c
- 配置规则
sudo vi /etc/udev/rules.d/51-android.rules
加入以下内容
# adb protocol on passion
SUBSYSTEM=="usb", ATTR{idVendor}=="046d", ATTR{idProduct}=="c31c", MODE="0600", OWNER="zhonghq"
OWNER为当前登录用户
- 重新usb服务
sudo service udev restart
这种方法也存在较大的缺点,只能配置一台手机,而且配置操作叫复杂。
方法三
通用配置,是根据方法二的优化版本
- 配置规则
sudo vi /etc/udev/rules.d/51-android.rules
加入以下内容
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666"
- 重启usb服务
sudo service udev restart
此方法配置起来方便快捷,无需查看手机的信息,而且能够适配大部分的手机。
方法四
方法三已经非常实用了,但是在使用过程中,我们还是会发现有部分手机不能连接上,下面这种方法可以作为方法三的辅助。
- 查看当前插入的手机设备信息
lsusb -v | less
Bus 001 Device 027: ID 18d1:4e30 Google Inc.
Couldn't open device, some information will be missing
Device Descriptor:
...idVendor 0x046d Google Inc.idProduct 0xc31c
- 配置规则
vi ~/.android/adb_usb.ini
在文件中加入idVendor号
0x046d
- 重启adb服务
adb kill-server
adb start-server
问题
有时候,使用lsusb -v | less命令不一定能够准确获取到插入手机的信息,可以使用以下方式准确获取
- 插入手机
lsusb -v > usb
- 拔出手机
lsusb -v > usb1
- 对比结果
diff usb usb1
将diff输出结果中idVendor和idProduct提取出来就是插入的手机对应的信息了。
参考文档:Establishing a Build Environment