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
一次实际操作如下图所示,手机端:
远端PC:
我们可以看到,这种方式有两点要求:
1.手机root以添加永久的adb无线调试端口,(否则会报错,因为 /system/build.prop是个只读文件)
2.手机和远端PC处在同一个子网下,换句话说,二者要ping的通,否则connect根本找不到对应ip
方法二 端口转发
第二种方法是端口转发,成功后可以直接像在本地PC一样操作adb。这种方法需要先了解一下adb的原理。
如上图所示,adb调试由三部分组成,分别为安卓设备上的deamon、本地PC的client和server。其中server负责查询连接到本地的可调试设备有哪些,通常占用5037端口,client负责输入命令。而我们只需要将本地的5037端口转发到远端PC的5037端口去(红线部分),那么就可以在远端PC实现adb命令。
具体实践如下图,我使用tabby terminal可以一键端口转发
需要注意的是,这里远端PC必须adb kill-server,因为要保证远端的5037端口不被占用。方法二相比于方法一的好处是,在多台安卓设备时可以很方便的adb devices检索识别,而方法一需要苦哈哈的一个个找ip进行connect。但这仍然需要远端PC和本地PC ping的通,如果不在一个子网的话,还是得通过代理等方式先解决这个问题。