花式玩转adb、fastboot

3,482 阅读2分钟

这也是手机投屏到手机的一个实现原理

你在实际开发时是否遇到以下问题:

  • 开发时总需要连接数据线,总是不方便
  • 电脑输出的电流老不够,一到开发时就体验不了手机的快充

ADB在哪

$sdk/platform-tools

打开ADB远程调试

需要设备与PC出于同一局域网内

手机已有root权限?

在手机终端中执行

setprop service.adb.tcp.port 5555
stop adbd
start adbd

随后在pc端执行

adb connect 设备ip:5555

手机没有root权限

先使用数据线连接电脑

PC端输入:

adb tcpip 5555

拔掉数据线

PC端输入:

adb connect 设备ip:5555

ADB端口转发

adb forward tcp:5005 tcp:5005
#PC上所有5005端口通信数据将被重定向到手机端5005上

也就是说这个命令执行完成后,在手机上面创建一个等待5005端口的socket,我们使用pc就能来连接127.0.0.1:5005来与手机的socket通信

Fastboot是用来干嘛的?

Fastboot工具需要设备启动fastboot模式,一般是音量-加开机键长按 用来线刷你的安卓设备

这就花式了?

我们将adb/fastboot通过交叉编译到我们的arm64设备上,不会编译没关系,咱们用别人编好的

adb-ndk

如下:

也就是说我们之前pc能对设备实现的操作,我们都能用一个设备对另外的设备进行同样的操作

手机又不能调试软件,有啥用

  • 可以卸载删除局域网其他设备的app
  • 管理其他设备的文件
  • 通过otg数据线实现手机对手机刷机(可行,实验过了)
  • 转发对方设备的端口到本设备(就可以连接对方设备的套接字,投屏等等)

跨局域网调试设备

这只给个思路

需要借助内网穿透工具(如frp),还需要一台服务器

依旧使用arm64的frp,将设备的adb远程监听端口映射到服务器的指定端口

随后在PC执行

adb connect 服务器ip:你指定的端口

这样就实现了调试外网的任意设备 就可以通过scrcpy等工具远程控制外网的设备