WiFi(网络)调试Android手机

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连接,实验成功,记录在此,方便日后查阅。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章