Scrcpy 隧道连接
Scrcpy 主要用于镜像本地 Android 设备。通过隧道方式可以连接到远程设备(例如,通过互联网)。
要连接远程设备,可以让本地 adb 客户端连接到远程 adb 服务器(前提是它们使用相同版本的 adb 协议)。
远程 ADB 服务器
Section titled “远程 ADB 服务器”要连接到远程的 adb server,让该服务器监听所有网络接口:
adb kill-serveradb -a nodaemon server start# keep this open警告:客户端与 adb server 之间的所有通信均为未加密。
假设该服务器可通过 192.168.1.2 访问。随后,在另一终端运行 scrcpy:
# 在 bash 中export ADB_SERVER_SOCKET=tcp:192.168.1.2:5037scrcpy --tunnel-host=192.168.1.2:: 在 cmd 中set ADB_SERVER_SOCKET=tcp:192.168.1.2:5037scrcpy --tunnel-host=192.168.1.2# 在 PowerShell 中$env:ADB_SERVER_SOCKET = 'tcp:192.168.1.2:5037'scrcpy --tunnel-host=192.168.1.2默认情况下,scrcpy 使用用于建立 adb forward 隧道的本地端口(通常为 27183,参见 --port)。也可以强制使用不同的隧道端口(在更复杂的场景中,当涉及更多重定向时可能有用):
scrcpy --tunnel-port=1234SSH 隧道
Section titled “SSH 隧道”要安全地与远程 adb server 通信,建议使用 SSH 隧道。
首先确保远程电脑上的 adb server 已运行:
adb start-server然后,建立 SSH 隧道:
# 本地 5038 --> 远程 5037# 本地 27183 <-- 远程 27183ssh -CN -L5038:localhost:5037 -R27183:localhost:27183 your_remote_computer# 保持该会话开启在另一终端运行 scrcpy:
# 在 bash 中export ADB_SERVER_SOCKET=tcp:localhost:5038scrcpy:: 在 cmd 中set ADB_SERVER_SOCKET=tcp:localhost:5038scrcpy# 在 PowerShell 中$env:ADB_SERVER_SOCKET = 'tcp:localhost:5038'scrcpy为避免开启远程端口转发,你也可以改用强制正向连接(注意此处使用 -L 而非 -R):
# 本地 5038 --> 远程 5037# 本地 27183 --> 远程 27183ssh -CN -L5038:localhost:5037 -L27183:localhost:27183 your_remote_computer# 保持该会话开启在另一终端运行 scrcpy:
# 在 bash 中export ADB_SERVER_SOCKET=tcp:localhost:5038scrcpy --force-adb-forward:: 在 cmd 中set ADB_SERVER_SOCKET=tcp:localhost:5038scrcpy --force-adb-forward# 在 PowerShell 中$env:ADB_SERVER_SOCKET = 'tcp:localhost:5038'scrcpy --force-adb-forward