Android-少年,快拔掉你的数据线

6,288 阅读6分钟

数据线是个磨人的小妖精

移动端开发,特别是 Android,模拟器略卡,也比较容易吃内存,所以我几乎都是电脑连真机调试运行,连接的纽带就是一根数据线。

数据线是没什么错的,错就错在,它是一根可以肉体可接触到的实物线。很多时候抬手拿杯子不小心碰了它一下,连接就断掉了, 想象一下,当写完一个非常棒的代码,准备运行看效果,未发现连接设备,这种情况发生多次时,内心的语言是十分不健康的。

所以,想给大家分享一个实用的小技巧,来摆脱数据线这个磨人的小妖精。

如何摆脱小妖精

具体操作步骤非常简单,只要三步,不过有两个前提条件。

1.电脑配置安装了 ADB 环境。关注我的绝大部分是 Android 开发人员,这个前提条件应该很好满足,不多说了。

2.手机和电脑的 IP 要保证是同一个网段内。这个只要连的是同一个局域网,一般都是在一个网段内的。

Step1-连接电脑和手机

第一步仍需要数据线,连接电脑和手机,这一步确保要连接成功,我的确认方法是看 Android Studio 的连接设别列表或 adb devices 命令查看。

如果你没有看到设备,在手机上检查 开发者选项-USB 调试 是否打开。

Step2-设置5555端口

成功连接之后,第二步是设置手机设备的 WIFI 调试端口 5555,然后少年,你就可以拔掉数据线啦,第三步已经可以无线的条件下操作了呢。

在电脑上的命令行窗口,输入下面的命令:

 adb tcpip 5555;

下面是运行结果截图,提示信息显示已经重置了端口。

Step3-连接手机的IP地址

最后一步,一个连接命令即可,如下,但是该命令需要知道手机的 IP 地址。

 adb connect  <要连接设备的IP地址>;

拿到手机的 IP 地址的方法有很多,这里分享两个我自己的方法。

第一种是下面这个命令,运行可以查看到连接设备的 IP 地址。

 adb shell  ifconfig wlan0;

下面红框标准的地方,就是设备的 IP 地址。

第二种是在手机操作,打开 设置-WLAN-配置 页面,可看到当前 IP 。

拿到设备的 IP 后,使用 adb connect 命令连接电脑和手机。

以上就完成了整个过程,此时再次运行 adb devices 得出以下结果。没有通过数据线,但成功的连接上了电脑和手机。

不同就是前面设备的唯一标识 APU7N16304003941,从 ADB 生成的随机序列号变成了 IP:port 的具体网络地址 192.168.0.126:5555

是不是很神奇?

实现原理

其实神奇的是无线通信,一种利用电波信号可以在自由空间中传播的特性进行信息交换的通信方式。当然这不是重点,是我在抖机灵,重点在于 ADB 的工作的方式和两种连接模式。

在日常的开发过程中,一直在使用着 ADB,但是很多人对它所知不多,例如我,现在大家来一起简单复习下吧。

ADB,是 Android Debug Bridge 的缩写,中文翻译为 Android 调试桥,是一个通用命令行工具。在 android_sdk/platform-tools 中可以找到它,它可以被用来直接操作 Android 的各种设备。例如 APK 的安装和卸载,查看手机已安装应用的包名和签名信息等等。

ADB 其实分为三个部分:

  • 客户端 adb client :运行在 PC 上。作用是发送命令,文章前面,我们输入的 adb 命令,就是在 client 环境下发送的。
  • 服务器 adb server :运行在 PC 上。作用管理客户端和后台程序之间的通信。
  • 后台程序 adbd :运行在 Android 设备上。以后台服务的形式运行 adb server 发来的命令。

下面是三者关系的简单示意图:

ADB 支持两种方式和 PC 进行连接通信, USB 和 TCP/IP 。数据线连接使用的是 USB 方式,我们这次介绍的 WIFI 连接使用的是 TCP/IP 方式。

手机上的 adbd 默认使用 USB 模式,如果要使用 WIFI 连接,需要手动打开 5555 监听。因此,我们有了上面 adb tcpip 5555;的这个操作步骤。

实际上,设置 5555 端口监听,实质上是设置 adbd 中 service.adb.tcp.port 的值。当 adbd 启动的时候,会先检查这个值,如果设置了,就是使用 TCP/IP 作为连接方式。如果没设置,就选择用 USB 作为连接方式。

如果设备拥有 root 权限,可以不用数据线,在手机上通过命令行设置据说也是可以的。手上没有已经 root 的设备,没法实践。你们条件满足,有兴趣可以尝试一下。

使用的命令如下:

// adb shell 下面执行一下命令
setprop service.adb.tcp.port 5555
ps |grep adbd
kill -9 {adbd进程号}

好啦,结束!小伙伴们,赶紧试下这个方法,体验从有线变无线的感觉,非常棒棒哒。

偷偷告诉你,WIFI 方式可以连接多台手机呢,再也不用怕电脑上的 USB 插口不够用了。还可以给测试妹纸的设备连接上开发电脑上,随时安装最新的 APK,也是成功地秀了一波操作!

好啦,我们下篇文章见。喜欢不要忘记给作者点个赞,或者分享给你的小伙伴哦!

期待与你一起成长

PS:

通过评论发现,文章中有几个地方没有描述清楚,这里补充几点:

  • 不是每次连接的时候,都需要插数据线,理论上只是第一次需要。

    文章中说到插数据线,是为了设置端口,允许 WI-FI 调试。所以如果WI-FI 调试使用过程中,连接断掉,只需要再次使用 connect 命令就好了。

    为什么说理论上,因为评论中「设计师吴彦祖」同学提出 “大部分国产手机可能会出现端口不是5555的情况; 即使你设置成5555重启手机后也会变回去; ” 这种情况我暂时还没遇到,但是遇到的同学,需要重新连接数据线,设置端口号。

  • 关于耗电与充电
    看到这个问题,我深有体会。因为前几天,发现测试机竟然提示电量不足!,有线状态下,没电就自动补充了,测试机几乎一直是满电状态,突然被提示电量不足,的确意外。关于耗电与否,没有准确数据评估,但是我觉得咱应该不差这点电吧。

    没电了,咱就去充唄。

  • AS 可以设置类似功能的插件
    Android Studio 可以设置相关插件,例如:ADB WIFI/ADB WIFI Connect 等,支持设置 WIFI 调试,原理没研究过不太清楚,有GUI页面供操作,使用起来很方便。看大家需要,喜欢用啥,就用啥,满足需求就可以。