Android如何远程ADB连接以及相关适配

3,813 阅读7分钟

记录连接远程ADB的过程

【内含大量图片,流量警告】

前言

ADB全称为Android Debug Bridge,译为安卓调试桥。是一个命令行工具,主要用于调试设备。详细大家对这个是耳熟能详了。关于ADB的安装、使用、命令等都不是本文的重点,大家有兴趣可先去网上搜索学习一番。

那么回归到本文的主题,远程ADB,有些小伙伴可能会有疑问,既然有数据线为什么要远程调试,又慢又不好用。

那当然是有这样的需求,例如我们的手机需要USB连接某一个外设硬件,无法插数据线连接电脑,又或者一些定制的板子/设备根本就没有USB接口。

比如我们的这种人脸门禁设备,根本就连不上电脑,那怎么调试?

image.png

所以远程ADB是必不可少的,也正是因为不具备连接数据线USB调试的条件,我们只能通过WIFI连接adb进行调试。

当然了最好我们的电脑和 Android 设备要处于同一局域网下,或连接同一Wifi即可。

虽然网上很多的Wifi连接ADB的教程,我都试过了但是总连不上,所以这里记录一下给大家作为参考。

一、如何启动远程ADB

这是最关键的一步,也是核心所在。这里分为Android11以上和以下两种情况说明。

1.1 Android 11 以上的设备

如果是Android11以上的设备,那当然是不需要说了,开发者模式是自带的,并且和 AS 是联动的,默认就是支持的。

在 AS 的运行一栏中,我们可以选择通过WIFI匹配设备:

image.png

点击匹配之后,默认就显示了 Android 11 扫码连接,简直是太方便了。

image.png

接下来我们只需要在 Android 11 以上的设备上打开开发者模式,找到无线调试的开关,打开它。

image.png

然后点击无线调试进入详情页面,使用二维码匹配设备,直接扫码即可

image.png

扫码页面如下:

image.png

当扫码完成之后,AS会更新状态,此设备已经连接。 image.png

当我们设备连接成功之后,我们就可以通过远程ADB来操作设备了,和USB连接的使用方式就是一样的了。

如果不想通过扫码来匹配,我们也可以通过命令匹配-连接的方式也能实现:

adb pair 192.168.3.7:5555

输入手机的IP和端口即可匹配,手机的IP和端口,在无线调试的详情中有显示的。

当匹配成功之后我们就可以通过命令来连接设备

adb connect 192.168.3.7:5555

不管是扫码匹配还是命令匹配,只需要匹配一次,下一次就可以直接连接即可。

总的来说 AS 对 Android 11 支持的蛮好的,很方便。

1.2 Android 11 以下的设备

对于低版本的设备如何连接远程ADB呢?

咋们一步一步来,先电脑ping一下远程设备,确保是否在同一个局域网:

image.png

我们使用命令尝试连接试试?

adb connect 192.168.3.7

是我想多了,结果如下:

image.png

很明显会报错,因为我们目前是没有开启远程ADB的,接下来就是如何开启远程ADB选项了。

网上一搜大部分的操作都是先连wifi然后插入USB线,然后命令开启远程ADB,一顿操作如下:

# 进入手机终端
adb shell
# 获取 root 权限,需要在手机上授权
su
# 挂载系统分区
mount -o rw,remount /system
# 添加永久的无线调试权限
echo "service.adb.tcp.port=5555" >> /system/build.prop
# 重启设备使配置生效
adb reboot

首先不是说这些命令不行,首先需要root权限,其次还需要先连接USB,请问我都没USB怎么连电脑。。。

所以我是理所当然的连不上了。接下来怎么办,找朋友要一些工具试试。

甲虫ADB调试工具 【传送门】 密码:gau6

我们打开甲虫工具,然后打开远程ADB开关,我们再次尝试连接。

image.png

额,现在报错的不一样了,可以连了,但是又没连上?

网上的推荐是先停止adb 再启动adb 重新再试

image.png

接下来再试试其他方式试试?

直接不是让我们打命令开始ADB吗

shall setprop service.ADB.TCP.port 5555

本质上shall setprop service.ADB.TCP.port 5555 就是设置prop配置文件嘛,直接改这个文件不就行了?

使用文件管理器按照以下路径打开文件:/system/build.prop,在该文件的最后添加以下内容:service.adb.tcp.port=5555

失败!这。。。好像要ROOT权限才行。

还有什么办法? 换一个工具试试?

网络ADB调试工具 【传送门】 密码:9jsr

这个工具也是非常简单,直接打开ADB开关即可。

image.png

这就连接上了,开心 😁 😁

补充

我们是使用的别人的设备,如果是自己编译源码修改的话,我们可以默认开启远程ADB,

由于 Android 源码默认没有开启无线ADB调试功能,因此我们需要手动修改源码。

首先直接指定端口,可以sys.prop文件中添加 service.adb.tcp.port = 5555

此文件一般位于device/产品目录下,单独写入如上属性便可实现开机启动远程ADB了。

二、异地连接远程ADB

好了,接下来App开发好了,交给客户了,然后崩溃了,这... 日志平台没有收到崩溃信息啊,找不出问题?要不把设备寄过来?什么,你在国外?运费3000?

什么?让我过去调试一下?什么?在缅甸?打扰了,当我没说。

玩笑话说到这,其实有没有一种可能,我们直接调试客户手上的设备呢?这行不行的通呢?

虽然说这个场景属实不多见,但是如果真要走到这一步还是有可能实现的。

我们之前的设备远程ADB都是需要基于在同一个局域网下面才能实现,我们搭建一个虚拟的局域网就可以实现异地的ADB。

其实网上有一些第三方的平台早已实现类似的功能,如腾讯优测,TestIn,阿里MQC等等。

image.png

都是通过ADB直接连接到云端的设备上。体验大差不差,主要是用于指定的机型测试适配工作。并不适合我们这样的场景。

虽然我们用不到这样的平台,也不符合我们的使用场景,因为我们是自有的设备,那么我们也可以通过类似的软件和工具自己搭建一些虚拟局域网。

我就不献丑了,大家可以自行搜索教程,例如:

Zerotier 搭建私有根服务器及创建虚拟局域网

像我们调试设备不多的话,可以使用上面的方案搭建虚拟服务器,日常的调试维护基本够了,虚拟局域网组建之后,使用wifi连接adb的方法连接即可。(前文有介绍)

当然创建虚拟局域网的方式有很多,只要创建成功了都是可以做到同样的效果的,关于其他的方式例如 N2N 之类的也能实现,有兴趣了可以自行搜索进行扩展哦。

后记

对于一些特定的设备,这个远程ADB还是很有用的,反正现在我已经很少用数据线连接测试设备了,线太多了太乱了 😂 😂

最后补充一点,如果用一段时间或者开机关机之后,断开了ADB,或者经常怎么都连不上,可以尝试关闭wifi,再开启wifi,就可以connect成功了。

同时我们还能关闭USB调试,再打开USB调试。(不是无线ADB调试,就是普通的ADB调试)就可以自动连接上了。

最后帖一下常用的用与远程ADB的命令

ping 192.168.3.7
adb connect 192.168.3.7
adb devices
adb disconnect 192.168.3.7

adb tcpip 5555
adb tcpip

adb uninstall  com.zhitong.menjin
adb uninstall com.example.asus.jinyi


adb kill-server
adb start-server

好了,如果类似的效果有更多的更好的其他方式,也希望大家能评论区交流一下。

惯例,我如有讲解不到位或错漏的地方,希望同学们可以指出。

如果感觉本文对你有一点点的帮助,还望你能点赞支持一下,你的支持是我最大的动力。

最后感谢一下人美心善的欢欢小姐姐对我的技术指导。 😄😄

Ok,这一期就此完结。