ubuntu下USB连接Android手机,run
运行项目时会有如下问题:
而在 终端 使用 adb devices
出现如下提示:
List of devices attached
???????????? no permissions usb:1-1.2
同时在DDMS中显示设备名也显示????,也无法显示进程名,无法查看log。
一、工具介绍
android-sdk-linux/tools下有一堆工具,今天要用的是:Android Debug Bridge,在android开发过程中,这个工具是使用得最多的。(缩写adb,有点像gcc的gdb似的)
adb start-server – 实际上它会启动一个 adb fork-server server
adb kill-server – kill掉adb服务
adb devices – 列出所有的设备
如果终端没有adb命令 ,可以使用 sudo apt-get install adb-core
命令安装
二、设置usb权限
因为ubuntu这样的系统都是默认以非root身份在运行的,要使用usb调试,需要sudo支持。
- 首先连接手机,查看手机id号
zhx@ubuntu:~$ lsusb
Bus 002 Device 007: ID 1d57:3103 Xenta
Bus 002 Device 006: ID 058f:6366 Alcor Micro Corp. Multi Flash Reader
Bus 002 Device 005: ID 058f:9254 Alcor Micro Corp. Hub
Bus 002 Device 004: ID 0a5c:219c Broadcom Corp.
Bus 002 Device 003: ID 1a2c:0c21 China Resource Semico Co., Ltd
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 005: ID 19d2:0398 ZTE WCDMA Technologies MSM
Bus 001 Device 003: ID 0ac8:c33f Z-Star Microelectronics Corp. Webcam
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
想知道哪个是手机的usb口,很简单的办法就是插上手机执行一下lusb命令,然后拔掉手机再次执行一下lusb比较一下打印结果。
列表中 Bus 001 Device 005: ID 19d2:0398 ZTE WCDMA Technologies MSM
这一行为zte手机的usb使用端口。
- 2.创建手机驱动配置文件
$sudo vim /etc/udev/rules.d/51-android.rules
加入以下内容:
SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0398",MODE="0666"
其中的idvendor
和 idProduct
指的是USB的ID可以使用lsusb查询得到。比如我的是:Bus 001 Device 005: ID 19d2:0398 ZTE WCDMA Technologies MSM
,ID 19d2 就是idVendor
,0398就是 idProduct
。
在这一步有时会碰到一个比较怪的问题是手机的usb显示如下:
Bus 001 Device 007: ID 19d2:0398
只显示这些内容。然后执行adb devices 也检测不到任何设备。这时需要手机打开usb调试功能(部分手机在拨号键盘输入*#*#717717#*#*
能打开usb调试).
- 3.更改权限:
$sudo chmod a+rx /etc/udev/rules.d/51-android.rules
- 4.重启usb设备:
$sudo /etc/init.d/udev restart
或者
$sudo service udev restart
三、重新启动adb server(很重要):
$ adb kill-server
$ adb start-server
或进入adb目录
$ sudo android-sdk-linux/platform-tools/adb kill-server
$ sudo android-sdk-linux/platform-tools/adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
$ android-sdk-linux/platform-tools/adb devices
到这步可能出现List of devices attached 下面没有设备出现,这就意味着 adb不识别新的USB 设备,执行以下操作:
& vi .android/adb_usb.ini
在文末加入一行 : 0x19d2
# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
# USE 'android update adb' TO GENERATE.
# 1 USB VENDOR ID PER LINE.
0x19d2
这个 0x2717 就是我们得到的设备号码
四、使用usb进行调试
在DDMS选择相应的devices,可以看到log了。
最后,注意在手机上允许 usb调试。