- 桌面应用
- 移动开发
- 开发工具
【免费下载链接】escrcpy
优雅而强大的跨平台 Android 设备控制工具,基于 Scrcpy 的 Electron 应用,支持无线连接和多设备管理,让您的电脑成为 Android 的完美伴侣。
Escrcpy 是一款以 Scrcpy 为核心、基于 Electron 构建的跨平台 Android 设备图形化控制工具,将 Scrcpy 的命令行能力封装为可视化界面,并在此基础上延伸出多设备群控、键盘映射、MCP 智能操控、自动化脚本、无线连接与 Gnirehtet 反向供网等进阶能力。本文以项目英文首页 docs/en/index.md 中定义的 10 大核心特性为主线,结合仓库源码与配套指南,系统讲解每项特性的能力边界、操作路径与底层实现依据,帮助你快速上手并深入理解 Escrcpy 的架构设计。
项目定位:图形化封装 + 能力延伸
Escrcpy 官方首页将其定位为一句话:"Display and control your Android device graphically with scrcpy, powered by electron."也就是说,它不是一个从零实现的镜像协议,而是把 Scrcpy 的成熟能力(高性能、低延迟的屏幕镜像与控制)包装成 GUI,并在此基础上做功能延伸。这一点在 desktop/electron/middleware/index.js 中体现得非常直观:渲染进程通过createMiddleware()一次性注入adb、scrcpy、gnirehtet、search、desktop、terminal、win等中间件,统一通过contextBridge暴露给前端页面。
首页的 Hero 区提供了三个入口动作:Get Started(指向 快速上手)、Help(指向 帮助中心),以及项目主页。下文将沿首页定义的 10 大特性逐一展开。
快速上手:从安装到首次镜像
在深入特性之前,先掌握最基础的连接流程,完整步骤见 快速上手指南。
安装方式
- 发布包手动安装:从项目 Releases 页面下载对应平台的安装包(Windows / macOS / Linux)。
- macOS 通过 Homebrew 安装:使用社区维护的
homebrew-escrcpy仓库,一条命令即可完成安装与升级。 - macOS 与 Linux 的额外说明:这两个平台默认未内置 Scrcpy 二进制,需要先参照 Linux 安装文档 或 macOS 安装文档 手动安装依赖。注意:在 Escrcpy@1.27.1 及以上版本中,scrcpy 二进制文件已初步集成,不再需要手动安装。
USB 连接
- 在 Android 手机上开启开发者模式与 USB 调试(手机弹出调试授权提示时点击允许);
- 打开 Escrcpy,将手机通过数据线连接电脑;
- 设备列表检测到手机后,点击「开始镜像」即可。
Wi-Fi 无线连接
无线连接有两种方式:
- 扫码连接:在开发者模式的「无线调试」中开启功能,点击「使用二维码配对设备」,用 Escrcpy 扫描后即可完成连接。
- IP 地址连接:在无线调试页面获取设备无线地址(通常是连上 Wi-Fi 时分配的 IP)和端口号(默认
5555),在 Escrcpy 中输入并点击连接。若首次无线连接失败,通常需要先完成配对(详见 FAQ)。
无线能力的底层实现位于 desktop/electron/middleware/adb/helpers/scanner/index.js,其中定义了MDNS_CONFIG、probeDeviceCandidates、scanMdnsDevices等工具,对应首页特性中的「局域网自动发现」能力——通过 mDNS 主动探测局域网内的 ADB 设备,而不必手动逐个填写 IP。
Gnirehtet 反向供网
设备连接成功后,通过设备列表 -> 设备控制栏 -> Gnirehtet即可开启反向供网,让 Android 设备复用电脑的网络连接。Windows 与 Linux 版已内置 Gnirehtet;macOS 未内置,需手动安装(见 Gnirehtet 参考文档)。
从源码看,Escrcpy 对 Gnirehtet 的封装与官方 CLI 一一对应:desktop/electron/middleware/gnirehtet/index.js 中的install(deviceId)、start(deviceId)、stop(deviceId)、tunnel(deviceId)分别映射到官方命令gnirehtet install、gnirehtet start、gnirehtet stop、gnirehtet tunnel,并使用ProcessManager统一管理子进程生命周期,应用退出前(quit-before事件)会自动清理。
特性一:内嵌镜像(Inset Mirror)
首页描述为:"Dedicated embedded window, auto-fits screen resolution and orientation, with integrated one-tap shortcuts"(专用内嵌窗口,自动适配分辨率与屏幕方向,内置一键快捷操作)。
这是 Escrcpy 最核心的使用形态。与直接运行scrcpy命令不同,镜像窗口被嵌入应用内部,自动跟随设备分辨率与屏幕方向变化,且窗口上集成了一键快捷操作。对应的进程管理实现在 desktop/electron/middleware/scrcpy/index.js:createScrcpyProcess负责启动 scrcpy 子进程,并通过readyPattern(匹配Renderer:、Texture:、[server] INFO: Device:等输出)判定镜像是否就绪,确保界面层能感知"镜像已真正开始渲染"这一时刻。
特性二:键盘映射(Keyboard Mapping)
首页描述:"Configure touch, joystick, swipe, scroll, and automation mappings directly on the embedded mirror"(直接在内嵌镜像上配置点击、摇杆、滑动、滚动与自动化映射)。
该特性允许用户直接在镜像画面上为触控、摇杆、滑动、滚动等操作建立按键映射,将键盘/鼠标动作翻译成设备交互,适合游戏与高频重复操作。映射的配置入口与镜像窗口深度集成,是 Escrcpy 区别于纯 Scrcpy GUI 的特色扩展之一。
特性三:多设备群控(Multi-Device Control)
首页描述:"Control multiple devices simultaneously in a single window, broadcast input, with batch screenshot and APK install support"(单窗口同控多台设备,广播输入,支持批量截图与 APK 安装)。
设备操作指南 docs/en/guide/operation.md 将「批量处理」单列一节,明确支持:
- 批量镜像
- 批量截屏
- 批量安装应用
- 批量文件管理
- 批量执行脚本
- 批量定时任务
在架构上,ADB 中间件 desktop/electron/middleware/adb/index.js 通过@devicefarmer/adbkit的Adb客户端与@escrcpy/adbx封装管理所有已连接设备,并用p-limit控制并发操作上限(对应偏好设置中的「并发限制」),从而在批量执行时避免对 ADB 服务造成过载。
特性四:集成控制栏(Integrated Control Bar)
首页描述:"Compact, draggable sidebar with reorderable controls: rotation, screenshot, apps, files, terminal, AI assistant, and automation"(可拖拽排序的紧凑侧边栏,涵盖旋转、截图、应用、文件、终端、自动操控与自动化)。
控制栏是设备日常操作的中枢。设备操作指南 中「设备交互栏」一节列出的完整操作项包括:
- 自动操控(MCP)
- 开关机、主页、返回
- 启动应用(镜像组)
- 关闭屏幕(实验性)
- 通知、电源、旋转、音量
- 截图、重启
- 安装应用、文件管理
- 执行脚本、定时任务
- Gnirehtet
前端组件位于 desktop/src/components/control-bar,按功能拆分为rotation、screenshot、install、launch、terminal、gnirehtet、volume、explorer等独立子组件,并在index.vue中统一编排,支持拖拽排序,符合"紧凑、可拖拽、可排序"的定位。
特性五:Copilot 智能操控(基于 MCP 协议)
首页描述:"AI assistant built on MCP protocol for intelligent Android device control with multi-model chat support"(基于 MCP 协议构建的 AI 助手,支持多模型对话与智能设备控制)。
Copilot 是 Escrcpy 面向 AI 时代的前沿特性:通过 MCP(Model Context Protocol)将"设备控制能力"暴露给 AI 模型,用户可以用自然语言让 AI 助手操作设备;同时支持多模型对话。控制栏中「自动操控(MCP)」入口即此能力。需要注意的是,首页与 README 同时注明:Escrcpy 专注提供稳定的集成底座,部分进阶功能来自私有扩展仓库 EscrcpyX 并以付费方式提供。
特性六:自动化脚本(Automated Execution)
首页描述:"Visual step-by-step workflow orchestration with screen image recognition and batch execution across multiple devices"(图形化逐步编排工作流,支持屏幕识图条件判断与多设备批量执行)。
自动化脚本把「操作步骤」可视化地编排为工作流,步骤之间可加入屏幕图像识别作为条件判断(例如"识别到某画面再执行下一步"),并支持在多台设备上批量执行。它与「批量执行脚本」「批量定时任务」共同构成设备操作指南中的批处理矩阵,适合回归测试、UI 巡检、批量初始化等场景。
特性七:多设备管理(窗口编排)
首页描述:"Visual window orchestration for centralized management of all connected devices"(可视化窗口编排,统一管理所有已连接设备)。
这一特性有完整的独立指南:窗口编排指南,其要点如下:
- 进入方式:主界面右上角点击「Arrange」按钮,进入全屏可视化编排界面。
- 全局配置组件:通过「Add Widget」下拉菜单添加,用于设置所有设备的默认窗口宽高与坐标;每个编排方案仅允许一个全局配置组件。
- 设备窗口组件:从已连接设备列表中添加,每台设备只能添加一次;设备名优先显示自定义名称,其次为设备型号;已添加的设备不会重复出现在下拉列表中。
- 布局调整:左键拖拽移动位置,拖拽窗口角落调整大小;窗口最小宽度为容器宽度的 1/6、最小高度为容器高度的 1/4,不能拖出编排区域。
- 布局管理:支持「重置布局」「清空所有组件」(带确认弹窗)、「删除单个组件」(悬停后点击右上角 ×)。
- 配置存储机制:全局配置写入
scrcpy.global配置节点,设备配置写入scrcpy.[DeviceID]节点;参数格式为--window-width、--window-height、--window-x、--window-y,与 Scrcpy 原生窗口参数一一对应。 - 生效时机:设备启动镜像时自动应用对应窗口配置;设备级配置优先,未设置的参数继承全局配置;保存后立即生效,无需重启应用。
特性八:无线连接(Wireless Connection)
首页描述:"Wireless ADB connections with LAN auto-discovery and Gnirehtet reverse tethering support"(无线 ADB 连接,支持局域网自动发现与 Gnirehtet 反向供网)。
无线连接的两种建立方式(扫码配对 / IP 直连)已在「快速上手」中说明,此处补充两点技术细节:
- 局域网自动发现:依赖 ADB 扫描器 中的
MDNS_CONFIG与scanMdnsDevices,通过 mDNS 协议发现局域网内开放了无线调试的设备,免去手动输入 IP。 - Gnirehtet 反向供网:官方参考文档 docs/en/reference/gnirehtet/index.md 说明其原理——通过
adb实现反向网络共享(reverse tethering),让设备复用电脑的网络,无需 root,支持 TCP/UDP over IPv4(暂不支持 IPv6)。官方提供 Rust 与 Java 两种实现,建议优先使用 Rust 版(占用 CPU 与内存更低、无需 Java 运行时)。Escrcpy 在 Windows 与 Linux 中内置了 Gnirehtet,macOS 需手动安装。
特性九:Scrcpy 内核
首页描述:"High-performance, low-latency screen mirroring and control"(高性能、低延迟屏幕镜像与控制)。
Scrcpy 是 Escrcpy 的镜像引擎,仓库 docs/en/reference/scrcpy/index.md 完整收录了 Scrcpy v3.2 的核心信息,摘要如下:
- 技术指标:仅镜像设备屏幕(轻量原生);帧率 30~120fps(视设备而定);画质可达 1920×1080 及以上;延迟约 35~70ms;首帧约 1 秒;无需在设备上安装任何应用、无需 root、无需账号。
- Android 版本要求:至少 API 21(Android 5.0);音频转发需 API ≥ 30(Android 11+)。
- 常见使用示例(可直接套用的命令行):
- H.265 编码、限 1920 分辨率、限 60fps、关闭音频、模拟物理键盘:
scrcpy --video-codec=h265 --max-size=1920 --max-fps=60 --no-audio --keyboard=uhid - 在独立虚拟显示屏中启动 VLC:
scrcpy --new-display=1920x1080 --start-app=org.videolan.vlc - 录制设备摄像头到 MP4:
scrcpy --video-source=camera --video-codec=h265 --camera-size=1920x1080 --record=file.mp4 - 免调试 OTG 模式控制设备:
scrcpy --otg - 手柄控制:
scrcpy --gamepad=uhid(简写scrcpy -G)
- H.265 编码、限 1920 分辨率、限 60fps、关闭音频、模拟物理键盘:
Escrcpy 对该引擎的封装不止于"启动进程":在 scrcpy 中间件 中,还通过 helper.js 的parseScrcpyAppList解析scrcpy --list-apps输出(区分系统应用*前缀与用户应用-前缀),以及parseScrcpyCodecList解析可用的视频/音频编解码器与编码器列表——这正是偏好设置中「视频编码」「音频编码」下拉选项的数据来源。
特性十:快捷键管理(Shortcut Management)
首页描述:"Customizable global hotkeys for quick device operations"(可自定义的全局快捷键,快速执行设备操作)。
Escrcpy 支持自定义全局快捷键,将常用设备操作(如截图、旋转、音量调节等)绑定到系统级热键,即使应用不处于前台也能触发。快捷键注册与分发的实现位于 desktop/electron/services/shortcuts/index.js。另外,Scrcpy 内核自带大量内置快捷键(如Alt+f切换全屏、右键触发返回、中键触发主页),完整列表见 Scrcpy 快捷键参考,在 Escrcpy 中以快捷操作的形式直接继承可用。
偏好设置:八类配置面板一览
偏好设置面板(docs/en/guide/preferences.md)将 Scrcpy 的众多命令行参数图形化为开关与下拉框,目前覆盖八大类:
| 分类 | 主要配置项 |
|---|---|
| 通用 | 主题、语言、文件存储路径、Adb 路径、Scrcpy 路径、Gnirehtet 路径、Scrcpy 参数、Gnirehtet 参数、自动连接设备、自动执行镜像、Gnirehtet 修复、调试、悬浮控制栏、使用系统终端、首选终端、并发限制 |
| 视频控制 | 禁用视频转发、最大尺寸、视频码率、刷新率、视频编码、显示方向、旋转角度、屏幕裁剪、显示器、视频缓冲、接收端(v4l2)缓冲 |
| 设备 | 显示触摸点、保持唤醒、控制时熄屏、控制后熄屏、控制时禁用自动亮屏、模拟辅助显示 |
| 窗口 | 窗口宽、窗口高、窗口 X 坐标、窗口 Y 坐标、无边框模式、全屏模式、置顶、禁用屏保 |
| 音频 | 禁用音频转发、保留设备音频、音频源、音频编码、音频码率、音频缓冲、音频输出缓冲 |
| 录制 | 录制视频格式、录制视频方向、录制时长、禁用视频回放、禁用音频回放 |
| 输入 | 鼠标模式、鼠标绑定、键盘模式、键盘注入方式、手柄 |
| 摄像头 | 摄像头源、摄像头尺寸、摄像头比例、摄像头帧率 |
其中「键盘模式」选择uhid模式是解决中文输入的官方推荐方案(见下节 FAQ);「并发限制」对应多设备批量操作时 ADB 并发上限;「Adb 路径 / Scrcpy 路径 / Gnirehtet 路径」则用于指定各二进制文件的绝对位置——在 Microsoft Store 版本或 Linux 沙箱受限环境下,这一项往往是修复启动失败的关键。
常见问题排查速查表
帮助中心 汇总了高频问题,整理为速查表:
| 问题现象 | 推荐解法 |
|---|---|
| 电脑无法检测到设备 | 重新插拔并确认已授权 USB 调试;仍无效则用第三方工具(如 DriverWizard)安装驱动 |
| 无法输入中文 | 偏好设置 → 输入控制 → 键盘模式选择uhid;设备端安装支持物理键盘的输入法(如微信输入法)并配置物理键盘布局;电脑输入法切换至英文后,用Ctrl+Shift切换中英文 |
| 无线连接提示"目标计算机积极拒绝" | 首次无线连接可能需要配对;或先插入 USB 完成授权后再使用无线 |
| 连接后可截图但无法操作 | 部分设备(尤其小米)需额外开启「USB 调试(安全设置)」以允许模拟点击权限 |
| 下载时被杀毒软件拦截 | 由于未做证书签名,Windows Defender 可能拦截;可在 Windows 安全中心中将下载目录加入排除项 |
| 无法获取设备列表 / 镜像启动报错 | 大概率是 Adb 或 Scrcpy 路径错误;在偏好设置「全局模式」右上角重置配置后重试 |
| macOS 窗口最小化后找不到托盘图标 | 系统托盘图标过多被隐藏,可使用 iBar、Bartender 等工具管理 |
| macOS 提示文件已损坏 | 终端执行sudo spctl --master-disable允许任意来源;或sudo xattr -r -d com.apple.quarantine /Applications/Escrcpy.app |
| Kernel32.dll 找不到 DiscardvirtualMemory 入口 | 仅支持 Windows 10 及以上版本 |
| 音频采集异常导致镜像失败 | 常见于电脑无音频输出或 Android 版本较低;在偏好设置中关闭「音频转发」即可 |
| Linux 安装后无法打开 | 新版.deb安装包已修复沙箱辅助程序的权限问题,直接安装最新版本即可 |
| 调整镜像窗口大小后出现黑边 | 双击黑边区域会自动隐藏 |
源码结构:理解 Escrcpy 的分层设计
若想进一步研究实现,仓库的主程序代码位于desktop/目录,关键分层如下:
- desktop/electron/middleware:主进程中间件层,按能力拆分为
adb(设备发现、文件管理、电池、下载上传)、scrcpy(镜像进程与参数解析)、gnirehtet(反向供网)、terminal(终端)、search、window、desktop等模块,最终在 middleware/index.js 统一注入渲染进程。 - desktop/electron/process:进程管理,
manager.js提供ProcessManager统一管理 scrcpy / adb / gnirehtet 子进程的创建与清理。 - desktop/src/hooks:渲染层组合式函数,如
use-control-action、use-device-rotation、use-device-volume、use-screenshot-action、use-gnirehtet-action等,对应控制栏各操作按钮的业务逻辑。 - desktop/src/store:状态管理,包含
device(设备列表)、preference(偏好设置)、control、theme等模块。 - docs:完整的中英文文档站(
en/与zhHans/),涵盖指南、Scrcpy 全量参考、Gnirehtet 参考与变更日志。
整体架构可以概括为:Electron 主进程通过中间件管理外部二进制进程与系统能力,渲染进程通过组合式函数调用中间件暴露的 API,偏好设置将 Scrcpy/Gnirehtet 的 CLI 参数转化为图形化配置并持久化。理解这一分层后,无论是排查问题还是二次开发,都能快速定位到对应模块。
- 桌面应用
- 移动开发
- 开发工具
【免费下载链接】escrcpy
优雅而强大的跨平台 Android 设备控制工具,基于 Scrcpy 的 Electron 应用,支持无线连接和多设备管理,让您的电脑成为 Android 的完美伴侣。
相关推荐
Escrcpy 深度解析:基于 scrcpy 的跨平台 Android 图形化投屏控制工具
Escrcpy 深度解析:基于 scrcpy 的跨平台 Android 图形化投屏控制工具 导读 Escrcpy 是一款基于 Electron 构建的 scrc
桌面应用移动开发SAM 免费 Steam 成就管理:本地改数据,官方接口同步
SAM 免费 Steam 成就管理:本地改数据,官方接口同步 游戏成就卡住、进度被 Bug 毁掉、或者单纯不想再刷,SAM(Steam Achievement
桌面应用移动开发开发工具Qwen3-30B-A3B-Thinking-2507-FP8模型扩展应用:多模态与工具调用能力
Qwen3 30B A3B Thinking 2507 FP8模型扩展应用:多模态与工具调用能力 Qwen3 30B A3B Thinking 2507 FP8
桌面应用移动开发开发工具
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考