✦开发者故事

我用 iPad 写完了一整个应用。方法如下。

Xcode。Interface Builder。iOS Simulator。一个有 47 个文件的完整 Swift 项目。全都在咖啡馆里通过我的 iPad Pro 运行。没有妥协,没有变通。下面是完整的故事。

“在 iPad 上写代码”的问题

每一年,Apple 都让 iPad 更强大。M 系列芯片。Liquid Retina XDR 显示屏。Magic Keyboard。而每一年,开发者们都在问同一个问题:我真的能用这东西写代码吗?

答案一直是“算是吧”。你可以通过 GitHub Codespaces 在浏览器里用 VS Code。你可以用 Blink Shell SSH 登录服务器。你可以用 Swift Playgrounds 这样的应用做些基础实验。但只要你需要真正的工具——Xcode、Android Studio、Visual Studio,以及带着你 dotfiles 的像样终端——你就卡住了。

这些并非随意的限制。Apple 不允许在 iPadOS 上运行完整的 IDE。Xcode 永远不会原生运行在 iPad 上(至少不会是完整版)。而基于浏览器的编辑器,无论变得多好,从根本上都受限于浏览器标签页能做的事。

所以我换了个思路。我没有把 IDE 带到 iPad 上,而是把 iPad 带到了 IDE 面前。

我的配置:Remio + Mac mini + iPad Pro

我的配置简单得近乎让人不好意思:

我在 iPad 上打开 Remio,输入 Mac mini 上显示的 PIN 码,两秒钟内就看到了我的 Mac 桌面。完整分辨率。完整色彩。我的整个开发环境,原封不动地停在我离开时的样子。

不用配置 VPN。不用维护 SSH 隧道。不用创建账号。只需要一个 PIN 码和一次连接。

为什么这比基于浏览器的编码更好

所有替代方案我都用过。说真的,是全部。下面说说,为什么搭配一台真正 Mac 的 Remio,胜过我试过的每一种基于浏览器的方案。

GitHub Codespaces / VS Code Web

Codespaces 用于 Web 开发确实令人印象深刻。但它运行在 Linux 容器里。没有 Xcode。没有 Interface Builder。没有 iOS Simulator。没有 Core Data 模型编辑器。如果你在开发 iOS 或 macOS 应用,它根本不是选项。即使是 Web 开发,你也受限于浏览器沙盒——不能访问本地文件,没有原生终端,也不能运行任意后台进程。

SSH + 终端编辑器

我爱 Vim。真的爱。但在终端编辑器里构建一个有 47 个文件、xib、资源目录和 Core Data 模型的 SwiftUI 应用,这不是高效——是自虐。代码补全、重构、实时预览和可视化调试器这些 IDE 功能,是有存在的理由的。

云桌面(AWS WorkSpaces、Shadow PC)

你可以在云上租一台 Mac,每月大约 $50-100。但你已经拥有一台 Mac 了。为什么要花钱去租一台更差的?用 Remio,你用的是自己真正的机器——真正的文件、真正的工具链、真正的环境。而且延迟更好,因为你的 Mac 在你家的网络里,而不是在弗吉尼亚的某个数据中心里。

真实工作的一天

让我带你看看一个真实的工作日是什么样子——就拿咖啡馆里的某个周二来说。

上午 08:30坐下,连接,继续工作

我带着 iPad 和 Magic Keyboard 在咖啡馆坐下。打开 Remio。连接到家里的 Mac mini。Xcode 已经开着,里面是我昨晚的项目——每一个断点、每一个标签页、每一处未提交的改动,都原封不动。

上午 08:35编写 SwiftUI

我在写 SwiftUI 代码。代码补全完美运行,因为这是真正的 Xcode,运行在真正的 Mac 上,用的是真正的 Swift 编译器。每一次击键都感觉是即时的——Remio 的原生输入处理意味着,从按下一个键到看到字符出现,没有任何可感知的延迟。

为什么感觉像在本地

原生输入直接送达主机——局域网上约 8 ms 的处理时间,内部实测;其余部分是显示器自身 60 Hz 的刷新节奏。

上午 09:15在 iOS Simulator 上运行

我需要在 iOS Simulator 上测试。我按下 ⌘R。Simulator 在我的 Mac 上启动,我在 iPad 屏幕上看到它。我可以用 iPad 上的触控手势操作模拟的 iPhone——出乎意料地自然。点按、滑动、滚动。直接就能用。

上午 10:00在 Interface Builder 中做界面

该做些界面工作了。我打开 Interface Builder。拖动约束、调整布局、在不同设备尺寸上预览。这正是在基于浏览器的编辑器里不可能完成的那类工作。可视化工具是无可替代的。

上午 11:30调试并发问题

我在调试一个棘手的并发问题。我设置断点、单步执行代码、在调试器中检查变量。LLDB 运行得完美无缺,因为我用的是真家伙,而不是基于网页的近似品。

下午 01:00切换到 Android

午饭后,我切换到我的 Android 项目。我关掉 Xcode,打开 Android Studio。同一个连接,同一套配置。Remio 不在乎我在运行什么应用——它串流的是整个桌面。

晚上 07:00当天小结

到一天结束时,我写了大约 400 行 Swift,修了三个 bug,向 TestFlight 提交了一个构建,还审阅了两个 pull request。全都是在咖啡馆里用一台 iPad 完成的。这一切都不需要任何特殊配置,也不需要任何妥协。

让这一切成立的细节

键盘快捷键

这是大多数远程桌面应用掉链子的地方。Remio 会正确转发每一个键盘快捷键。⌘B 构建。⌘R 运行。⌘⇧O 快速打开。⌃⌘Space 输入表情符号(对,连这个也行)。Magic Keyboard 的修饰键与 Mac 的修饰键一一对应。没有转换层,没有按键重映射带来的混乱。

文字渲染

代码就是小字,而且很多。一款会让文字模糊或产生瑕疵的远程桌面应用,对开发来说完全无法使用。Remio 的针对文字优化的 H.265 编码让代码锐利如刀。语法高亮的颜色准确。字重正确。在 iPad Pro 的分辨率下,看起来真的就像 Xcode 在本地运行。

在屏幕之间切换

在我的 Mac mini 上,我有一个虚拟的第二显示器。Remio 让我轻点一下就能切换查看哪块屏幕——一块放代码,另一块放 Simulator。在 iPad 上,我在它们之间滑动,或用台前调度来安排我的工作区。

剪贴板与文件传输

需要从控制台复制一条错误信息,留着稍后搜索?Remio 的剪贴板同步让这一切天衣无缝——在一台设备上复制文字,在另一台设备上粘贴。而当我想把一个参考文件放进项目文件夹时,我直接从 iPad 把它发送到 Mac。

我的工作流程小贴士

用这种方式写了六个月代码之后,我养成了一些习惯,让体验变得更好。

  1. 让你的 Mac 使用有线连接。我的 Mac mini 通过以太网接在路由器上。这消除了影响串流质量的最大变量。
  2. 让 iPad 使用稳定的 Wi-Fi 连接。咖啡馆里的 5GHz Wi-Fi 通常没问题。如果连接不稳,Remio 的自适应画质会自动调整——但稳定的连接意味着文字始终清晰。
  3. 把 Xcode 的字号设为 13-14pt。通过 Remio 在 iPad Pro 的显示屏上,这个大小阅读起来很舒适,不需要缩放。
  4. 一切操作都用键盘快捷键。在 IDE 操作中越少用触控/鼠标,你就越快。这对本地开发也是好建议。
  5. 在 iPadOS 设置中开启“减弱动态效果”。这会略微减少 iPad 一侧的动画开销,给 Remio 多留出一点点性能余量。

我做不到的事(说句实话)

为了做到完全坦诚,下面是它的局限。

这些取舍是真实存在的。但对我来说,能把整个开发环境装进一台 700 克的平板里带着走,远远盖过了它们。

实现了的 iPad 开发者梦想

多年来,我一直在等 Apple 把 Xcode 带到 iPad 上。后来我意识到,它可能永远不会发生——至少不会是完整的专业版。于是我不再等待,找到了一个更好的答案。

Remio 并没有把 Xcode 放到你的 iPad 上。它把你整台 Mac 放到了你的 iPad 上。每一个应用,每一个工具,每一个文件。再加上让 Mac 感觉就在你面前的显示质量和输入响应——因为,在所有重要的方面,它确实就在你面前。

最好的开发配置,不是马力最强的那个,而是你真正随身带着的那个。

搭配 Remio 的 iPad Pro,是我拥有过的最好的开发机器——不是因为它的规格,而是因为它走到哪儿都跟着我,而我完整的开发环境也跟着它一起。

如果你是一位有 Mac 和 iPad 的开发者,试试 Remio。设置只需两分钟。无需账号。而如果你对游戏方面感兴趣,请看看我们的指南:在 iPad 上玩电脑游戏——让写代码成为可能的同一套低延迟技术,也让游戏体验变得出色。

Remio 应用图标

亲自试试 Remio。

把你整台 Mac 装进 iPad 里带走。设置只需两分钟,无需账号,得益于原生输入,打字感觉就像在本地。

免费使用无需账号30 秒完成配对