ADB服务端调试
ADB 可以通过“服务端/远程主机”方式进行调试,要看具体想实现哪种远程方式与考虑的安全性。
常见做法与命令
1) 把设备插在远程机器上,客户端控制该远程机器上的 ADB server(推荐:用 SSH 隧道)
思路:在远程主机上运行 adb server,客户端通过 SSH 隧道或把 adb client 指向远程 adb server 来控制远程设备。
在远程主机(有设备通过 USB 连接)执行:
adb kill-server
# -a 表示监听所有接口,nodaemon 表示以前台启动(保持运行)
adb -a nodaemon server start
在本地客户端:
通过 SSH 隧道(更安全):
ssh -L 5037:localhost:5037 user@server_ip
# 隧道建立后(本地 5037 转发到远程 5037),在本地运行:
export ADB_SERVER_SOCKET=tcp:127.0.0.1:5037
adb devices
或直接指向远程 adb server(不安全,需保证网络受限):
export ADB_SERVER_SOCKET=tcp:server_ip:5037
adb devices
结果:
adb
命令会在远程主机上执行,并列出远程主机连接的设备。
2) 直接让设备开启 TCP/IP(无线调试),从任意机器 adb connect
适合:设备和调试机在同一局域网或设备可被直连的情况。
步骤(一次性或需要 USB):
adb usb # 确保通过 USB 连接
adb tcpip 5555 # 设备切换到 TCP 模式(端口 5555)
# 在设备上查 IP,例如 192.168.1.100
adb connect 192.168.1.100:5555
adb devices
注意:在某些 Android 版本/设备上,你需要在开发者选项里启用“无线调试 / Wireless debugging”(Android 11+ 有 pairing 流程,更安全)。
3) 使用 Android Studio / Remote ADB 插件 或 云设备(Firebase Test Lab 等)
Android Studio 有远程调试/ADB over network 插件和“Wireless debugging”配合使用。
如果不想自己搭设备,可以使用云真机平台(付费),直接在云端运行并调试。
安全与实用性建议
不要把 5037 端口直接暴露到公网(ADB 无认证,风险极高)。优先使用 SSH 隧道、VPN 或内网环境。
如果需要跨公网:用 SSH 隧道或反向隧道(
ssh -R
/ngrok)来避免直接暴露端口。对现代 Android(Android 11+):优先使用系统的 Wireless debugging pairing 功能(带配对码,更安全)。
若团队多人共享设备,建议把设备接到一台受控的“设备机房/服务器”,大家通过 SSH 或内网访问这台机器的 adb server(并做好权限管理)。
小结
想安全、可靠地远程控制插在一台主机上的设备:在那台主机上启动 adb server + 用 SSH 隧道(
ssh -L
)从本地连接,并设置ADB_SERVER_SOCKET
指向本地 127.0.0.1:5037。想快速在同一 Wi-Fi 下调试某台手机:用
adb tcpip 5555
/adb connect IP:5555
或系统的 Wireless debugging(Android 11+)。绝对避免直接把 adb server 暴露到公网端口(除非在严格受控的内网环境)。