【小技巧】AS 手动实现无线真机调试

发表于 讨论求助 2023-05-10 14:56:27

【回复“1024”,送你一个特别推送】


原文作者:械勒的时间

原文地址:http://www.jianshu.com/p/3938adad0b3d

特别声明:本文为械勒的时间原创并授权发布,未经原作者允许请勿转载,转载请联系原作者

其实无线真机调试很简单,走一遍流程就能学会并且记住,无需插件,无需 Root,使用插件反而会将这个流程复杂化。先放上纯流程版,方便通篇阅读之后的快速查阅,接下来还提供详细版以供参考。

默认读者可以成功真机调试,控制台使用 cmd 或者 AS 的 Terminal 均可。

纯流程版

  1. 将手机与电脑连接在同一局域网内

  2. 手机用线连接电脑,控制台输入命令 adb devices ,有设备编号为连接成功

  3. 拔手机线,控制台输入命令 adb tcpip 5555,将 TCP 模式在 5555 端口启动,无任何输出为成功启动

  4. 控制台输入命令 adb connect 192.168.1.246:5555,192.168.1.246 为手机在局域网的 ip 地址,输出连接成功

  5. 此时无线连接已经成功,正常调试即可

详细版

由于公司电脑配置较低,虚拟机运行缓慢,所以我一直倾向于真机调试,但是有线调试空间局限性很大,经常在测试上线的几天身后围一屁股人(小公司没有版本管理跟自动编译),很不方便,无线调试就是一个很好的解决方案。

很多人倾向与使用 AS 插件,但是实践证明手动连接更加方便灵活,插件在某些意义上复杂了这个流程。

检查连接

首先,你得有一个能正常有线调试的手机,还得有一根数据线,因为未 Root 的手机需要用电脑的 ADB 来来打开 TCP 模式并且绑定端口。

真机用线连电脑,打开 Terminal(其实我更习惯用 cmd),键入 adb devices,这个命令会输出所有连接到这台电脑上的设备,每个设备有一个独一无二的序列号。见图 1。

此时,我电脑上连接了一台设备,连接方式为有线。

进行无线连接

在确定你的手机与电脑成功联机之后,输入命令 adb tcpip 5555,这个命令的作用是打开手机的 TCP 模式,并且将其绑定到 5555 接口。其中,5555 端口是一个习惯使用的端口,就像 MySql 一般使用 3306 端口一样,也可以随意指定,只要不产生端口冲突即可。

这条命令执行后没有任何输出,但是手机会出现一次,类似于与电脑断线并且重新插线的反应,代表执行成功。打开成功之后,就可以拔掉手机数据线了。

接下来执行连接命令,但是首先我们需要进入手机 WIFI 网络详情,找到此时手机 WIFI 中的 IP 地址。接下来就可以执行连接命令了,连接命令为 adb connect 手机 IP 地址: TCP 绑定的端口

例如,我手机的 IP 地址是 192.168.1.246,之前 TCP 模式绑定的端口为 5555,此时我需要执行的连接命令为 adb connect 192.168.1.246:5555

此时控制台输出 connected to 192.168.1.246:5555,表示无线连接成功。

TCP 模式一旦开启,只在手机重启时才会关闭,关闭后如果还需使用需要重新开启。断网重连,换 WIFI,不会关闭,只要保持手机电脑在统一 WIFI 下就不需要重新开启。

不过如果手机一旦断网,或者切换 WIFI,与电脑的无线连接会立即断开,如果需要重新连接,重新执行一次** adb connect** 命令就好。

之前说过,使用插件反而会将这个流程复杂化,是因为这个过程本来就很简单,就是几个命令的事情,这个功能是 AS 原生支持的,使用插件的话,如果断网或者换 WIFI,插件会认为手机的 TCP 模式已经关闭,需要重新用线连接一次电脑,来开启 TCP 模式。(也可能是我用的插件不够智能?)

PS:如果执行** adb connect** 命令时候,出现 由于目标计算机积极拒绝,无法连接 的提示,检查一下 TCP 模式是否开启,端口号是否正确。

调试

有线与无线连接,调试方式没有差别,点击编译器上的绿色箭头 Run app 即可。

如果无线调试时候 OFFLINE 了,关掉手机无线网络,重新连接一次,然后重新执行** adb connect** 命令即可,就像有线调试时那样。

连接多台设备

之前检查连接的时候,使用过一个 adb devices 命令,可以得到一个已连接设备的序列号表,一次连接多台设备跟连接一台设备流程类似,通过序列号指定设备即可。

如图 4,此时我的电脑通过有线接入两台设备,通过无线接入一台设备。

此时如果直接执行大部分 adb 命令,比如开启 TCP 模式,都会得到一个异常提醒,多于一个设备。如图 5。

这种情况下,只要指定设备序列号就可以正常执行。

例如,需要进行 TCP 模式开启,adb -s f87c75bb tcpip 5555,但是与电脑建立连接的 adb connect 命令不需要加序列号,因为 IP 地址本来就相当于是序列号了。

PS:手机有线连接与无线连接都与一台电脑进行连接的话,会被识别为两台设备。就像笔记本的有线网卡与无线网卡互相独立。但这种连接没有意义,所以推荐无线连接完成之后就把线拔了把。


个人理解,难免有错误纰漏,欢迎指正。

另外:上次中奖的用户可能还没看到,还有几个没联系我,希望中奖读者看到后,马上联系我。

推荐文章:

发奖了,看看中奖用户有没有你?
关于昨天送书活动的特别说明


发表
26906人 签到看排名