0 元把联想平板变成 MacBook 副屏:真扩展、支持触控、纯开源

0 元把联想平板变成 MacBook 副屏:真扩展、支持触控、纯开源

macOS, Android, 开源, 效率工具

这篇是用 OpenDisplay 把一台安卓平板(联想 TB520FU)变成 MacBook 真副屏的完整记录。全程 0 元,开源,支持 WiFi 无线连接和平板触控。整个过程装两个 App,大约十分钟。


先说结论:为什么不用现成方案

搜"安卓平板 当 Mac 副屏",你能搜到一堆答案,但绝大多数要么过时,要么根本满足不了需求。我先把坑踩一遍:

Apple Sidecar(随航)------只认 iPad。 这是最省事的方案,但苹果不对外开放,安卓平板一点办法都没有。

联想自家的 Freestyle / Smart Connect------只支持 Windows 主机。 官方描述写得很清楚:联想平板配 Windows 10/11 的联想电脑。Mac 不在支持范围。

spacedesk------老教程说它不支持 macOS 主机,这条已经过期。 官网现在确实挂着 macOS 主机端,但版本号后面写着 BETA(要求 macOS 14.4+)。免费,但稳定性自己承担。

Deskreen------免费开源,但它主要做"镜像"不是"扩展"。 想让它变成真副屏,得先让 macOS 凭空多出一块显示器,也就是要额外买个 HDMI 假负载(显卡欺骗器)插上,或者用 BetterDisplay Pro($21.99)建虚拟屏。多绕两道。

Sunshine + Moonlight------延迟最低,但体验是"远程接管"。 客户端会独占输入,鼠标被抓走。它适合串流打游戏,不是"桌面上多一块屏"。

Duet Display------体验最成熟,但要订阅。 如果你不想折腾、也接受年付订阅,它依然是最省心的选择。

方案对比

方案 真扩展 平板触控 无线 价格 开源 支持安卓平板
Apple Sidecar ✅ ✅ ✅ 免费 ❌ ❌ 只认 iPad
联想 Freestyle ✅ ✅ ✅ 免费 ❌ ❌ 需要 Windows 主机
Duet Display ✅ ✅ ✅ 订阅制 ❌ ✅
spacedesk ✅ 部分 ✅ 免费 ❌ ✅(macOS 主机端仍是 BETA)
Deskreen ⚠️ 需配假负载 ❌ ✅ 免费 ✅ ✅ 浏览器即可
Sunshine + Moonlight ❌ 接管式串流 ✅ ✅ 免费 ✅ ✅
OpenDisplay ✅ ✅ ✅ 免费 ✅ GPL-3.0 ✅ 社区移植

全部条件同时满足的,只有最后一个。


原理:为什么它能做到,别人做不到

这件事最难的地方不是"把画面传到平板上",而是让 macOS 相信你插了一块新显示器。

macOS 没有公开 API 能凭空创建显示器。OpenDisplay 用的是苹果私有的 CGVirtualDisplay(CoreGraphics 里的未公开接口),和 BetterDisplay、DeskPad 走的是同一条路。

一旦虚拟屏建起来,剩下的全是公开接口:

objectivec 复制代码
Mac 端                                       平板端
CGVirtualDisplay  ← macOS 认为接了一块显示器
  → ScreenCaptureKit        采集那块虚拟屏
  → VideoToolbox            硬件 H.264 编码
  → TCP :9000 端口  ══════→  平板监听
                              → MediaCodec 硬件解码
                              → 全屏渲染
  ← 触控 JSON 回传   ══════
  → CGEvent 注入到系统

这就是为什么它能上"真扩展":macOS 眼里那确实是一块显示器,你可以把窗口拖过去、在系统设置里排列位置,而不是看一个投屏画面。

也正因为用了私有 API,它无法上架 App Store,只能在 GitHub 分发。这一点后面还会提到风险。


准备工作

项目 要求
Mac macOS 14 或更高(本文实测环境:macOS 27.2,Apple Silicon)
平板 Android 8.0 或更高,且具备硬件 H.264 解码(现代平板都有)
网络 两端连同一个 WiFi,推荐 5GHz
花费 0 元

下载两个文件

Mac 端 (官方项目,iOS/iPad/Mac 通用发送端): github.com/peetzweg/op...

下载 OpenDisplay.dmg。**注意不要下成 **OpenDisplayReceiver.dmg------那个是"把另一台 Mac 当副屏"用的,方向相反。

平板端 (社区维护的安卓移植版): github.com/josepacelli...

下载最新的 OpenDisplay-android-vX.X.XX.apk。

安卓端为什么不用官方?因为官方只提供了 iOS/iPadOS 客户端,安卓版是社区移植的,走同一套通信协议,不需要改动 Mac 端。另外还有一个 GrapheneOS 专用的分支(gprot42/android-opendisplay),但它明确写了"面向 GrapheneOS,普通 OEM 安卓不在支持范围",所以普通平板选 josepacelli 这个。


第一步:安装 Mac 端

1.1 先校验安装包(可跳过,但建议做)

因为是从 GitHub 直接下载的可执行文件,花 10 秒确认它确实是官方签名、没被中间篡改过:

bash 复制代码
spctl --assess --type open --context context:primary-signature -v OpenDisplay.dmg

正常输出应该是:

ini 复制代码
OpenDisplay.dmg: accepted
source=Notarized Developer ID

accepted + Notarized Developer ID 就说明这个包通过了苹果的公证流程。我实测的版本(v1.25.0)就是这个结果。

想更进一步的话,还可以记录文件哈希备查:

bash 复制代码
shasum -a 256 OpenDisplay.dmg

1.2 安装

双击 DMG,把 OpenDisplay.app 拖进「应用程序」,然后在 Finder 里把左边的磁盘图标推出(卸载 DMG)。

因为这个包已经公证过,双击就能直接打开,正常情况下不会出现"无法验证开发者"的提示。万一遇到了,右键点击 App → 打开,确认一次即可。


第二步:安装平板端

把 APK 传到平板并安装。因为是侧载,需要在系统里允许「安装未知来源的应用」。

打开 App 后什么都不用设置------它会自动通过 mDNS/Bonjour 广播自己,并监听 9000 端口。


第三步:授予权限(最容易卡住的一步)

打开 Mac 端的 OpenDisplay,面板上会列出一串权限,每一项都是必需的:

权限 作用 不授予的后果
屏幕录制(Screen Recording) 抓取虚拟屏画面 平板上一片黑屏
辅助功能(Accessibility) 注入触控、滚动事件 有画面,但触控完全没反应
本地网络(Local Network) WiFi 设备发现 列表里看不到设备 ,而且不报错

点每项后面的 Grant... 会引导你到系统设置,或者直接点 Open Settings 手动勾选。位置在「系统设置 → 隐私与安全性」下,三项都在里面。

这一步的两个坑

坑一:屏幕录制权限勾选后,必须重启 App 才生效。 这是 macOS 的机制,不是 Bug。系统通常会弹一个「退出并重新打开」的按钮,直接点它。如果你手动退出再打开,效果一样。

坑二:本地网络权限是静默失败的。 如果没授予,App 不会提示你,只是设备列表永远是空的。这是排查"连不上"时第一个要检查的地方。


第四步:连接并使用

  1. 两端连同一个 WiFi(优先 5GHz)
  2. Mac 端 OpenDisplay 的 Devices 列表里,选中你的平板
  3. 面板上的 Mode** 选 Extend (扩展)**------选 Mirror 就变成复制主屏了
  4. 点 Display layout → Arrange Displays...,会打开系统设置里的显示器排列,确认副屏已经出现,拖成你想要的位置

成功之后,把窗口拖到平板那一侧就行了。

面板上几个选项是什么意思

选项 说明
Mode → Extend / Mirror 扩展(真副屏) / 镜像(复制主屏)
Quality → Best / Balanced / Fast 画质档。Best 最清晰但最吃带宽,卡顿就降档,比折腾网络有效
Show app in → Menu bar 图标常驻菜单栏,方便随时断连,建议保留
Logs 日志,排查问题用
Disconnect All 全部断开

【待填】性能与体验实测

这一节建议由你补上真实使用感受,比任何参数都有说服力。下面的框架和问题可以直接用。

连接方式:WiFi(5GHz)/ 有线

画质档位:Best

  • 文字是否锐利?副屏分辨率和缩放看起来正常吗?
  • 拖动窗口、滚动网页时,跟手程度如何?能明显感觉到延迟吗?
  • 平板上看视频、看代码、写文档分别是什么体验?
  • 连续使用一小时:Mac 端耗电、发热、风扇情况如何?平板耗电如何?
  • 触控实际用起来怎么样?点按、拖拽、双指滚动分别能否正常工作?
  • 断开重连是否顺畅?休眠唤醒后需要重新连吗?

(建议配图:副屏出现后的系统设置界面、平板上显示的实际画面、触控操作的截图或录屏)


踩坑清单

1. 私有 API,苹果随时可能改。 CGVirtualDisplay 是未公开接口。理论上 macOS 大版本更新有可能让它失效------一旦失效,症状是"打开 App 后系统设置里没有多出显示器"。好消息是:只有虚拟屏创建这一步依赖私有 API,采集和串流管线用的都是公开接口,所以就算真出问题,影响范围也只在那一步。这也是 BetterDisplay、DeskPad 等一众工具共同面对的不确定性。

2. WiFi 传输目前没有加密。 上游的路线图里,"加密 WiFi 传输 + 配对码"还没实现。也就是说同一局域网内,理论上存在被监听或被连接的可能。家里自己的网络问题不大,咖啡厅、公司、酒店这类公共 WiFi 不要用。

3. 触控功能有边界。 目前支持点按、拖拽、双指滚动。右键、多指手势、压感笔都还在路线图上。 想拿它当数位板用,这个方案不够。

4. 路由器设置可能直接掐断连接。 AP 隔离(客户端隔离)、访客网络、任一端挂 VPN,都会导致 Mac 找不到平板。而且 Mac 端没有手动填 IP 的输入框,WiFi 自动发现是唯一路径,没有兜底。

真遇到这种情况,退路是换 gprot42/android-opendisplay 那个分支------它补了手动填 IP 和"反向连接"(平板主动回拨 Mac),专治这些网络封锁。代价是它只针对 GrapheneOS 测试过。

5. 有线兜底不需要 adb。 如果 WiFi 实在不行,走 USB 有线。社区已经实现了 AOA(USB 附件协议)传输:插上数据线,平板上点一下系统弹窗确认就行,不需要开发者选项,也不需要装 adb。


一点背景:这些数字你可以自己验证

组件 版本 说明
Mac 端 v1.25.0(2026-10-01) 官方签名 + 苹果公证
安卓端 v0.0.50(2026-10-06) 社区移植,更新非常活跃
  • 官方项目:github.com/peetzweg/op...
  • 通信协议规范(想自己写客户端的话从这里开始):仓库里的 PROTOCOL.md
  • 安卓移植:github.com/josepacelli...
  • 许可:GPL-3.0。可以自由使用、研究、修改,甚至商用;但如果分发修改版,必须继续开源并保留原作者署名。

顺带说一句,这个项目之所以值得支持:它的 README 里有一句话大意是"如果你正准备自己写一个------别写了,来做贡献吧"。虚拟屏创建、低延迟 H.264 管线、输入注入这些最硬的骨头,都已经被趟平了。


总结

适合谁:手上有闲置安卓平板、不想花钱买便携显示器、能接受一点折腾、在意开源和隐私。

不适合谁:需要压感笔绘图、需要绝对稳定的按键响应、或者不愿意碰 GitHub 和侧载 APK------这几种情况直接买块 USB-C 便携显示器更省事,几百块钱买个零延迟、零软件、系统原生识别。

核心价值:它是目前唯一同时做到「真扩展 + 触控 + 无线 + 免费 + 开源」的方案。而这个组合,几个月前还只存在于付费订阅产品里。


*测试环境:macOS 27.2 / Apple Silicon Mac + 联想 TB520FU 平板。本文所有命令和界面描述均来自实际运行结果

相关推荐
挖掘狂人7 小时前
从 Agent Loop 到沙盒边界:一次讲清楚 Codex 的八大功能
程序员·openai·agent
SimonKing8 小时前
QClaw关停之后:一个工具的退场,一段关系的告别
java·后端·程序员
fxss1 天前
教孩子认字,一个字能讲出一整幅画|宝宝学识屋·学中文
产品
codigger1 天前
从 "调模型" 到 "搭系统":Harness Engineering 凭什么成为 2026 年 AI 圈最热的新词
程序员·编程·#人工智能·#agent
lugiax1 天前
跨平台移植:把一个Mac终端搬上 Windows 学到的七件事
程序员·ai编程
怕浪猫1 天前
面试官让我手写一个 Tool Use,我用了 3 种方案
设计模式·面试·程序员
陈随易2 天前
bm2,Node.js 与 Bun 项目部署新选择
前端·后端·程序员
一千柯橘2 天前
ReAct Agent 思维范式
程序员·ai编程
用户1694409815192 天前
Docker Desktop / WSL 启动失败排查全集:0x80070570、1603、START_PENDING、AppX 卡死一文搞定
程序员