adb本身提供了网络调试的功能,所以,在不能直接用USB连上Android手机的情况下,可以使用WiFi连接adbd进行调试。具体方法如下:
方法一 临时使用
如果只是暂时需要用WiFi连adb:
1. 手机、PC连上AP,确保两者能够正常分配IP(ifconfig查看):
PC:
手机:
(可以ping一下,验证互通;若不互通,请检查AP,PC,手机的网络设置)
2. USB连上手机,确保adb devices能够找到:
3. adb tcpip 5555(端口号,可以指定其他值),该命令将会重启手机上的adbd,开启网络调试功能:
4. 断开手机到PC的USB连接,adb connect 192.168.31.196:5555,提示connected即为连接成功:
5. 此时adb devices就能够看到通过tcp连接的手机了:
6. 此时,使用adb shell,就已经用WiFi连上手机了:
7. 断开连接,手机关机(或重启)会自动断开adbd到PC上adb的TCP连接;除此之外,有其他方法:
a) adb disconnect 192.168.31.120, 可以从adb交互中exit,再执行该命令(TCP连接畅通,交互没有卡顿情况下);
b) 另外打开一个终端执行上述命令(此时另一个终端的adb交互自动结束);
c) kill掉PC上的adb,也可结束adb交互,但不会清除adb devices中的设备;
方法二 经常使用
方法一需要每次先将手机通过USB连接到PC,使用adb tcpip命令开启网络调试功能,一旦手机重启,又要重复这些步骤,比较麻烦。
一劳永逸的方法是,在手机的/system/build.prop中增加一行配置:service.adb.tcp.port=5555(同样可以指定为其他值),实现开机就支持网络调试,不需要先USB连上手机。
可以先将/system/build.prop从手机中pull出来,修改后再push进去(需要root权限):
(注意:上面的adb remount命令需要root)
此后,每次重启,WiFi连接成功(可在PC上ping一下)后,就能直接使用adb connect 192.168.31.120连上手机了。
进行调试
WiFi连接的adb使用起来和USB连接的没有任何区别,可以正常使用adb shell, adb logcat, adb am,adb reboot等命令,使用Eclipse单步调试也没有任何问题(绝对无痛。唔,当然,如果WiFi信号不好,会很卡)。
下面就用Eclipse装一个了一个HelloWorld,并进行单步调试,没有任何问题:
总结
adb和adbd分别位于PC和手机上,是典型的C/S模式。通常情况下,二者通过USB连接,而本文介绍的则通过TCP连接。工作原理是,PC端的adb命令通过USB(或TCP)连接发送到手机端的adbd上,adbd执行具体的操作,并将相应的结果返回给adb,最后再终端中显示出来。感兴趣的同学可自行研究其源码,源码位于Android项目的system/core/adb目录(不知道如何获取Android源码,请查看《从github获取最新Android源码》)。
没有ROOT手机也可以使用WiFi调试,唯一的要求是启用手机的网络调试功能,是不是邪恶感顿生?是不是在想如何通过其他手段打开某手机的tcp调试功能,没错,在某知名黑客大赛上,就有黑客使用植入了恶意程序的“充电器”(伪装,带有MCU的USB控制器)轻松入侵了手机(不只是Android,感兴趣的同学自行搜索)。
PS:最近在调Android的USB-OTG功能,手机因为插上了OTG线,不能继续用USB连接adbd,所以试了一下WiFi连接,实验成功,记录在此,方便日后查阅。
转自:http://blog.csdn.net/xusiwei1236/article/details/41480319