escrcpy 设备连接与选择指南:serial、TCP/IP 无线连接与 autostart 全解析
【免费下载链接】escrcpy📱 Display and control your Android device graphically with scrcpy.项目地址: https://gitcode.com/GitHub_Trending/es/escrcpy
本文以 escrcpy 项目文档中的 connection.md 为核心,系统讲解 scrcpy 类工具的设备选择机制(serial / USB / TCP-IP 四类选择方式)、--tcpip无线连接(自动与手动两种路径)以及基于 AutoAdb 的自动启动方案,并结合 escrcpy 仓库源码说明这些连接能力在图形界面中的实际落地方式。读完本文,你将能处理多设备环境下"选谁、怎么选"的问题,并能在同一局域网内完成无线投屏的配置与排障。
设备选择(Selection)
adb devices会列出所有已连接的 Android 设备。与adb命令的行为一致,当且仅当恰好只有一台设备处于连接状态时,scrcpy 会自动选中它,无需任何参数:
scrcpy一旦存在多台设备,就必须显式指定目标设备。scrcpy 提供了四种指定方式,escrcpy 的镜像进程同样严格遵循这一约定——其 scrcpy 中间件在构造命令时统一拼接--serial="<serial>",可见 serial 是贯穿 CLI 与 GUI 两端的核心选择键(见 desktop/electron/middleware/scrcpy/index.js 中的createMirrorProcess)。
方式一:按 serial 指定
serial(序列号)是设备在 ADB 体系中的唯一标识,通过-s/--serial传入:
scrcpy --serial=0123456789abcdef scrcpy -s 0123456789abcdef # 短参数形式 # 若设备通过 TCP/IP 连接,serial 即为 ip:port(与 adb 行为一致) scrcpy --serial=192.168.1.1:5555注意最后一行:无线连接时 serial 不是一串编号,而是ip:port。escrcpy 的设备列表中同样以serialNo区分设备,其 DeviceSelectionHelper 还会对相同serialNo的历史/在线记录做去重合并,避免同一物理设备因 USB 与无线双重连接出现重复项。
方式二:按传输通道指定(USB / TCP-IP)
当多台设备中只有一台走 USB、或只有一台走 TCP/IP 时,可用以下参数精确命中:
# 选择唯一一台 USB 连接设备 scrcpy --select-usb scrcpy -d # 短参数形式 # 选择唯一一台 TCP/IP 连接设备 scrcpy --select-tcpip scrcpy -e # 短参数形式这两条参数语义上与adb -d、adb -e保持一致:若符合通道条件的设备数量不为 1,则选择失败。
方式三:直接连入已在监听的 TCP/IP 设备
若目标设备已经开启了 ADB 无线监听端口(典型为 5555),可以直接用--tcpip参数把地址交给 scrcpy,它会先完成 ADB 连接再启动:
scrcpy --tcpip=192.168.1.1:5555 scrcpy --tcpip=192.168.1.1 # 缺省端口为 5555方式四:通过环境变量 ANDROID_SERIAL
serial 还可以通过环境变量ANDROID_SERIAL提供,该变量同样被adb读取,因此配置一次即可同时作用于adb与 scrcpy:
# bash / zsh export ANDROID_SERIAL=0123456789abcdef scrcpy:: cmd set ANDROID_SERIAL=0123456789abcdef scrcpy# PowerShell $env:ANDROID_SERIAL = '0123456789abcdef' scrcpy在 escrcpy 中,serial 选择逻辑被封装在 selection/index.js 的DeviceSelectionHelper:它先将设备过滤为在线状态(emulator/device),再按serialNo分组去重,GUI 用户无需手动记忆 serial——点击设备行即可自动携带正确标识发起镜像。
TCP/IP 无线连接(wireless)
scrcpy 本身不负责传输通道,它始终通过adb与设备通信,而adb天然支持 TCP/IP 连接。无线模式的前提是:电脑与设备处于同一网络。escrcpy 的 adb 中间件完整复刻了这套能力,包括connect/disconnect/tcpip/ 获取设备 IP 等接口(见 desktop/electron/middleware/adb/index.js)。
自动模式(--tcpip)
--tcpip有两种用法,覆盖"不知道 IP"和"已知 IP"两种场景。
场景 A:不知道设备 IP,或设备尚未开启 TCP/IP 模式
先用 USB 连接设备,然后直接执行:
scrcpy --tcpip # 不带参数scrcpy 会自动完成三件事:自动探测设备 IP 地址与 ADB 端口、必要时开启设备的 TCP/IP 模式、在启动投屏前先完成 ADB 无线连接。escrcpy 的设备列表中也有等价的一键入口:点击设备行的 Wi-Fi 图标,会依次调用getDeviceIP获取地址、tcpip(id, 5555)开启监听端口、再以host:port触发连接(见 wireless-action/index.vue)。
场景 B:设备已在监听(典型端口 5555)
scrcpy --tcpip=192.168.1.1 # 缺省端口 5555 scrcpy --tcpip=192.168.1.1:5555强制重连:在地址前加+前缀,可强制与目标地址重新建立连接,适用于设备更换 IP 或连接状态异常的情况:
scrcpy --tcpip=+192.168.1.1手动模式(adb 命令)
不依赖--tcpip,完全用adb手工打通无线链路,步骤清晰、可控性最强:
用 USB 线将设备接入电脑。
让设备连上与电脑相同的 Wi-Fi 网络。
获取设备 IP:进入 设置 → 关于手机 → 状态 查看,或执行命令:
adb shell ip route | awk '{print $9}'在设备上开启 ADB 无线监听:
adb tcpip 5555拔掉 USB 线。
建立无线连接(将
DEVICE_IP替换为第 3 步查到的地址):adb connect DEVICE_IP:5555像往常一样运行
scrcpy。使用完毕后断开连接:
adb disconnect
escrcpy 中对应的断开入口同样存在:已处于 Wi-Fi 状态的设备行会显示断开按钮,内部调用adb disconnect <id>并刷新设备列表,与第 8 步语义一致(wireless-action/index.vue 的handleStop)。
Android 11+ 的免 USB 方案:自 Android 11 起,系统内置"无线调试"选项,可在开发者选项中直接获取配对码与 IP:port,配合adb pair完成配对后即可绕过物理 USB 连接。escrcpy 的 adb 中间件实现了pair(host, port, code)接口,其无线发现(mDNS 扫描 + 端口探测 + 并发连接)也封装在 scanner/index.js 中,GUI 中的"无线连接/发现"按钮即走这条链路。
自动启动(Autostart)
连接类工具的高频使用场景是"设备一插上就自动开始投屏"。scrcpy 作者提供了配套小工具 AutoAdb,它能在检测到新 Android 设备接入时执行任意命令,最典型的用法是直接拉起 scrcpy:
autoadb scrcpy -s '{}'其中'{}'会被 AutoAdb 替换为实际设备的 serial,从而把"设备接入"事件与"启动 scrcpy 并选中该设备"绑定起来。这与本文第一部分"serial 是选择设备的唯一键"形成闭环:事件驱动 + serial 定位,即插即用。
escrcpy 自身也具备类似的自动化能力:其 adb 中间件通过trackDevices()监听设备上线/下线事件(desktop/electron/middleware/adb/index.js 的watch),并在设备视图挂载时注册监听(desktop/src/views/device/index.vue 的onAdbWatch),可据此实现自动镜像、批量操作等扩展行为——理解 CLI 端的autoadb机制,有助于理解 GUI 端事件驱动连接的设计意图。
小结:四种选择方式速查表
| 场景 | 命令 | 说明 |
|---|---|---|
| 仅一台设备 | scrcpy | 自动选中 |
| 多台设备,按 serial | scrcpy -s 0123456789abcdef | TCP/IP 时为ip:port |
| 多台设备,唯一 USB | scrcpy -d | 即--select-usb |
| 多台设备,唯一 TCP/IP | scrcpy -e | 即--select-tcpip |
| 设备已在监听 5555 | scrcpy --tcpip=192.168.1.1 | 加+前缀强制重连 |
| 全局默认设备 | export ANDROID_SERIAL=... | adb与 scrcpy 共用 |
| 设备接入自动启动 | autoadb scrcpy -s '{}' | '{}'替换为 serial |
实践建议:日常单设备直接运行scrcpy;多设备环境优先用-s精确指定,避免-d/-e因"不唯一"而失败;无线场景建议优先使用--tcpip自动模式,仅在需要精细控制链路时才走adb tcpip+adb connect手动流程。若需在图形界面中体验同等能力,可参照 device 视图 与 scrcpy 中间件 的源码理解其内部实现。
【免费下载链接】escrcpy📱 Display and control your Android device graphically with scrcpy.项目地址: https://gitcode.com/GitHub_Trending/es/escrcpy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考