adb远程连接

简介

adb是安卓开发者常用的调试手段,通常来说开发者通过usb数据线连接PC和设备,然后开启开发者模式就可以打开shell开始调试了,但是总有一些情况需要远程调试(比如疫情被困在家)。这里介绍两种远程adb的方法。

方法一:adb connect

adb自己提供一种远程连接的方法,那就是adb connect。开发者可以使用adb connect ip:port的方式连接到一个远程安卓设备上,具体使用方法如下:

adb shell

su

mount -o rw,remount /system/挂载系统分区

echo "service.adb.tcp.port=5555" >> /system/build.prop //设置5555端口为adb端口

adb reboot //重启

然后远端就PC就可以通过IP:port连接到该手机,具体指令为:

adb connect IP:port

一次实际操作如下图所示,手机端:

image-20230323192156121

远端PC:

image-20230323192454811

我们可以看到,这种方式有两点要求:

1.手机root以添加永久的adb无线调试端口,(否则会报错,因为 /system/build.prop是个只读文件)

2.手机和远端PC处在同一个子网下,换句话说,二者要ping的通,否则connect根本找不到对应ip

方法二 端口转发

第二种方法是端口转发,成功后可以直接像在本地PC一样操作adb。这种方法需要先了解一下adb的原理。

adb原理.drawio

如上图所示,adb调试由三部分组成,分别为安卓设备上的deamon、本地PC的client和server。其中server负责查询连接到本地的可调试设备有哪些,通常占用5037端口,client负责输入命令。而我们只需要将本地的5037端口转发到远端PC的5037端口去(红线部分),那么就可以在远端PC实现adb命令。

具体实践如下图,我使用tabby terminal可以一键端口转发

image-20230323195839010

需要注意的是,这里远端PC必须adb kill-server,因为要保证远端的5037端口不被占用。方法二相比于方法一的好处是,在多台安卓设备时可以很方便的adb devices检索识别,而方法一需要苦哈哈的一个个找ip进行connect。但这仍然需要远端PC和本地PC ping的通,如果不在一个子网的话,还是得通过代理等方式先解决这个问题。

参考文献

[1] (23条消息) ADB远程桌面连接本地手机_adb远程连接手机_welsonx的博客-CSDN博客

[2] (23条消息) adb 连接安卓手机远程调试_adb远程连接手机_某呆啊的博客-CSDN博客