首页 > 代码库 > adb的那点小事——远程adb调试

adb的那点小事——远程adb调试

1.   前言

1.1.  写在前面的话

在之前的一篇文章《360电视助手实现研究》中介绍了在局域网内直接通过adb安装应用,本文接下来继续介绍adb一点有意思的小东东。本系列之所以取名《adb的那点小事》是因为,只想介绍一些有意思的而且平时大多数人关注不多的方面,类似于“adb原理、“adb如何使用之类的老生常谈不在本文的介绍范围内。

言归正传,本文介绍的内容是:在局域网内,如果进行adb远程调试,即:在没有数据线的情况下,如何在局域网内使用adb开发。

1.2.  本文的背景

作为一名Android程序员,每天接触最多的就是eclipseadb了。在开发的过程中,这几种场景我们应该并不陌生:

A.        手机正在测试同学手中,但是我们想要抓log。那么接下来会有两种选择:

a)         让测试的同学帮忙抓log,但可能抓不到自己想要的;

b)         让测试同学把手机送过来,或者自己去取,但需要浪费至少10几分钟。

B.        电脑连接一台刚才其他同学(开发或测试)手机拿过来的机器。那么接下来可能需要等待几分钟的时间来安装手机驱动。

C.         长时间的使用,adb数据线损坏或者不太灵敏

那么有没有一种好的办法可以解决上述问题呢?本文接下来将做一个探讨。

 

2.   技术实现研究

2.1.  远程调试的原理

要了解为什么可以远程调试,首先还是要简单的说一下adb的原理。我们平时所说的adbAndroid中是被实现为一种C/S结构的,其中Server端被称为adbd,也即adb守护进程,该进程运行在手机中。对于C/S结构的命令的执行响应过程,大家应该都比较熟悉,不再做介绍。这里继续说一下adbdadbd提供了两种监听客户端请求的方式:USBTCP/IP,其中USB方式是系统的默认监听方式。

所以,结合《360电视助手实现研究》中的介绍,接下来我们应该怎么做就比较明显了:

1.         首先,设置手机的adbdTCP/IP方式;

2.         其次,设置adbd监听某一特定的端口;

3.         最后,在远程(电脑上)通过adb connect连接到手机。

通过以上三部,我们就可以远程adb调试和打印log了。接下来将介绍具体的实现,及需要注意的一些问题。

 

2.2.  具体技术实现

要实现adb远程调试,首先需要手机具有root权限,可以通过下面的代码进行简单的判断:

 

在判断手机具有临时root权限后,接下来就是设置adbd监听的端口和重启adbd使端口生效了,代码如下:

在默认情况下adbd监听的端口为“5555”,这里可以根据需要(比如5555是否被占用)进行修改。

 

在完成上一部的操作后,可以到手机设置->WLAN->当前正在使用的wifi热点的信息中查看IP信息,也可以通过下面的方法获取:

 

接下来就可以在电脑上的cmd下通过“adb connect”连接刚才的IP,进行远程adb的调试了,如果成功会显示“connected to xxxxx”;连接失败则提示”unable to connect to xxxxx”,下面是我电脑操作的截图:

 

最后,在远程调试完成后,记得将手机adb恢复到usb模式:

 

好了,到这里,本文就介绍完了,有问题环境交流讨论。

adb的那点小事——远程adb调试