ubuntu下USB连接Android手机,run 运行项目时会有如下问题:

3858f1bd5290

2016-02-19 22:46:35.png

而在 终端 使用 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调试。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐