首先按照 SDK 上的说明建立 udev 的 rules 文件,然后:
在 Ubuntu 11.04 下通过usb连接 Android设备,使用 adb 时,会返回无法找到设备,解决办法如下:
- 在终端运行 lsusb
会发现结果有会有如下类似记录:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
注意最后一个
Bus 001 Device 003: ID 12d1:360e Huawei Technologies Co., Ltd.
这时键入,新建一个50-Android.rules文件,如下所示:
sudo vim /etc/udev/rules.d/50-Android.rules
在打开的文件中增加以下文本:
SUBSYSTEM==”usb”, SYSFS{“High Tech Computer Corp.”}==”12d1”, MODE=”0666”
- 运行以下命令:
sudo chmod a+rx /etc/udev/rules.d/50-Android.rules
让设备管理器重启
sudo /etc/init.d/udev restart
udev 是Linux kernel 2.6系列的设备管理器。它主要的功能是管理/dev目录底下的设备节点。它同时也是用来接替devfs及hotplug的功能,这意味着它要在添加/删除硬件时处理/dev目录以及所有用户空间的行为,包括加载firmware时。udev的最新版本依赖于升级后的Linux kernel 2.6.13的uevent接口的最新版本。使用新版本udev的系统不能在2.6.13以下版本启动,除非使用noudev参数来禁用udev并使用传统的/dev来进行设备读取。
- 在 Android sdk 的 platform-tools 目录下运行 (这一步很重要,必须要sudo,否则没效果,在之后的sdk都将adb放在了platform-tools中)
sudo ./adb kill-server
sudo ./adb devices
然后,就可以直接用 adb 来进行操作了。
若继续在Ubuntu 11.04 下执行adb devices命令, 返回的结果是:
List of devices attached
???????????? no permissions
这意味着,USB连接的设备是能够被识别的。经过上网查找之后,得知adb server需要以root的权限启动,于是有了如下命令:
www.linuxidc.com@linuxidc-laptop:~/Dev/Java/Android/android-sdk-linux_86/tools$ ./adb kill-server
www.linuxidc.com@linuxidc-laptop:~/Dev/Java/Android/android-sdk-linux_86/tools$ sudo ./adb start-server
* daemon not running. starting it now *
* daemon started successfully *
第一条命令用来杀死当前正在运行的server, 第二条命令则以root的权限启动了新的server. 我们可以再次查看devices:
www.linuxidc.com@linuxidc-laptop:~/Dev/Java/Android/android-sdk-linux_86/tools$ ./adb devices
List of devices attached
HT848KV04386 device
这次设备就被正确识别了。自然地, 像ddms之类的工具也能派上用场了。
_____________________________________________________________以下说明配置完毕后开始调试的步骤
注:如果没有 root 权限也是可以试试,一般情况下,都需要 root 权限,才能连接成功。
1.需要确保你的开发 PC 和 Android 手机都连上了 wifi 并处于同一网段下;
2.开启 usb 调试,且用 usb 将 Android 设备连接到开发 PC 上;
3.进入到你的 Android SDK 的 platform-tools 目录下,
执行如下命令来重启 Android 设备中的 adbd 后台程序重新侦听 TCP 的指定端口:
$./adb tcpip 5555
注:5555 是默认端口,换成别的也没有必要,且这里一定要设一个端口的!
4.执行如下命令来建立 wifi 调试连接:
$./adb connect Android设备实际的IP地址[:通过 ./adb tcpip 指定的端口号]
注:IP 地址和端口号之间有一个冒号,如果端口号为 5555 的话,则可以省略。
如果出现 “unable to connect to IP 地址:端口号” 此类错误信息,则:
1)进入 Android 设备终端中:
$./adb shell
2)切换为 Android 设备的 root 用户:
$ su -
3)设置 adbd 服务的指定端口号:
# setprop service.adb.tcp.port 5555
注:5555 虽是默认的,这里也要设一下,也可以是自定义的,但是什么必要。
4)设置 adbd 服务后,重新运行它:
# start adbd
注:# stop adbd 命令将会停止 adbd ,只能重启了 Android 设备了。
5)再重启 Android 设备中的 adbd 后台程序重新侦听 TCP 的指定端口:
$ ./adb tcpip 5555
6)再建立 wifi 调试连接:
$ ./adb connect IP地址[:端口号]
7)出现如下字样,表示成功:
connected to IP地址[:端口号]
8)进入 Android 设备终端中:
$./adb shell
9)执行 netstat 命令,则可以看到 IP地址:端口号 已建立的状态:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:5555 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:11000 0.0.0.0:* LISTEN
tcp 26 0 192.168.1.104:5555 192.168.1.102:40821 ESTABLISHED
---------------------------------------------
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:11000 0.0.0.0:* LISTEN
注:分隔线(—)上面的是建立好的状态显示,下面的是没有建立好的状态显示。
9)执行查看设备命令的结果,也与 usb 的不同:
$ ./adb devices
List of devices attached
192.168.1.104:5555 device
--------------------------
List of devices attached
android123456 device
注:分隔线(—)上面的是 TCP 连接,下面的是 usb 连接。
*.执行如下命令来重启 Android 设备中的 adbd 后台程序重新侦听 usb :
./adbusb注:执行此命令后,再用./adbdevices查看设备就查不到了, 执行
sudo ./adb kill-server 和
sudo./adbstart−server也不行, 只能重启Android设备了! 所以,正确的做法是: 1)进入Android设备终端中:
./adb shell
2)切换为 Android 设备的 root 用户:
$ su -
3)设置 adbd 服务的指定端口号:
# setprop service.adb.tcp.port -1
注:关闭 wifi 调试,只需在此将端口号设为负壹(-1)即可。
4)以上三步做完后,即可执行 ./adb usb 切回 usb 连接调试方式。
*注:如果只是断开一下连接,只需运行如下命令:
$./adb disconnect