其实无线真机调试很简单,走一遍流程就能学会并且记住,无需插件,无需Root,使用插件反而会将这个流程复杂化。
先放上纯流程版,方便通篇阅读之后的快速查阅,接下来还提供详细版以供参考。
默认读者可以成功真机调试,控制台使用 cmd 或者AS的 Terminal 均可。
纯流程版
- 将手机与电脑连接在同一局域网内
- 手机用线连接电脑,控制台输入命令 adb devices ,有设备编号为连接成功
- 控制台输入命令 adb tcpip 5555,将TCP模式在5555端口启动,无任何输出为成功启动
- 拔手机线,控制台输入命令 adb connect 192.168.1.246:5555,192.168.1.246为手机在局域网的ip地址,输出连接成功
- 此时无线连接已经成功,正常调试即可
详细版
由于公司电脑配置较低,虚拟机运行缓慢,所以我一直倾向于真机调试,但是有线调试空间局限性很大,经常在测试上线的几天身后围一屁股人(小公司没有版本管理跟自动编译),很不方便,无线调试就是一个很好的解决方案。
很多人倾向与使用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:手机有线连接与无线连接都与一台电脑进行连接的话,会被识别为两台设备。就像笔记本的有线网卡与无线网卡互相独立。但这种连接没有意义,所以推荐无线连接完成之后就把线拔了把。
个人理解,难免有错误纰漏,欢迎指正。转载请注明出处。