Codex 现在能在浏览器里跑 iOS 模拟器了
2026/6/9 17:41:46 网站建设 项目流程

Codex 现在能在浏览器里跑 iOS 模拟器了

最近刷推看到codex有一个有意思的功能,就是能在浏览器里跑 iOS 模拟器了。

我记得之前iOS 开发流程是这样:Xcode 里写代码,切到模拟器看效果,改完再编译,再切回来。界面出了 bug,截图贴给 AI,描述半天。

这个插件出来感觉可以简化这个开发流程了。


什么是 Build iOS Apps 插件

简单说,这是一个让 Codex 可以在浏览器里预览和操控 iOS App 的插件。

它的核心能力有三个:

模拟器的屏幕会被持续截取,变成视频流推到 Codex 右侧的浏览器面板上。

也有反向操控。浏览器里的点击、拖拽、打字,都会转成模拟器的触摸坐标和键盘事件发回去。

还有个能力是识别原生 UI 元素。插件读取 App 的 Accessibility 信息,在浏览器画面上覆盖一层透明的可交互按钮,每个对应一个 iOS 原生控件。

效果就是:你在一个窗口里写代码、看界面、点按钮、调布局,不用在 Xcode 和模拟器之间来回切,这听着就很方便。


咋做到的

我其实对他这个插件实现很感兴趣,就看了下,发现其实挺朴素,就是把几个已有的开源组件拼在了一起。

serve-sim:把模拟器画面搬到浏览器

EvanBacon 做的 serve-sim 是这个插件的核心依赖,—“Thenpx serveof Apple Simulators”,就是让你像启动一个本地 HTTP 服务一样简单地把模拟器画面串流出来。

用法也很简单:

npx serve-sim<设备名或UDID>

跑起来之后,localhost:3200是预览页面,127.0.0.1:3100/stream.mjpeg是原始的 MJPEG 视频流。

这个项目目前在 GitHub 上有 1600 多星,支持 React Native、Expo、Flutter、原生 iOS、SwiftUI 和 KMP 项目。主要是解决了一个问题——iOS Simulator 一直只能在 macOS 的窗口里看,没有一个方便的方式把它嵌入到别的界面里。

Accessibility:让 AI "看见"按钮在哪

浏览器能显示画面,但要识别画面里的元素,还得另想办法。

Web 应用有 DOM,AI 可以直接查询"这个按钮的 class 是什么、在页面哪个位置"。但 iOS App 没有 DOM,它的 UI 是原生渲染的。

插件的解法是读取 iOS 系统的Accessibility 信息——就是 VoiceOver 等辅助功能用的那套数据。每个 UI 元素的名称、位置、是否可点击、层级关系,系统本来就有记录。插件拿到这些数据后,在浏览器的画面上盖一层透明的 HTML 按钮,每个按钮对应一个原生 iOS 元素。

这样 Codex 看到的就不再是一张"截图",而是一堆有语义的可交互控件。它可以知道"这里是一个叫’登录’的按钮,坐标在 (120, 340)",然后决定要不要点它。

这个思路和 InditexTech 做的 MCP Server 类似——后者也是通过 Facebook 的 idb 工具来控制模拟器,支持 tap、swipe、截图、录屏、甚至位置模拟。只不过那个是纯 MCP 协议,这个是直接集成在 Codex 的插件体系里。

SwiftUI Preview:不用完整重装 App

插件还有一个比较巧的设计:它能单独运行 SwiftUI Preview。

原理是临时生成一个专门用来展示 Preview 的小 App,把你的 SwiftUI 预览组件放进去。改代码之后,它不需要每次都完整重装 App,而是只重新编译预览相关的小动态库,再通知正在运行的 Preview App 更新画面。

比完整的 build-install-launch 流程快不少。跟 Xcode 原生 Preview 比还是有差距,拿来快速验证 UI 改动够用了。


局限性

我发现有几个限制:

串流有延迟。serve-sim 的 MJPEG 流不是原生渲染,中间有截取、编码、传输的过程。实际体感上,浏览器里的画面会比真正的 Simulator 窗口慢半拍到一拍。做 UI 微调没问题,做动画调试估计有点吃力。

元素识别依赖 Accessibility 质量。如果你的 App 没有好好设置 Accessibility label,插件识别出来的元素可能是一堆"Button"、“StaticText”,Codex 也不知道该点哪个。这和 Web 开发里不写语义化 HTML 是一样的问题。

SwiftUI Preview 的编译速度和 Xcode 原生的还是有差距。毕竟 Xcode 的 Preview 是深度集成在编译链里的,外部方案能做到"不完整重装"已经不错了,但别指望和 Xcode Preview 一样丝滑。

安全方面需要留心。操控权限一旦给了,AI 在模拟器里就是自由的,随便点随便输。App 里有支付、删账号之类的操作,人得在旁边守着。


相关项目

  • serve-sim — 核心串流工具,1600+ stars
  • ios-sim-serve-skill — Codex skill,封装了 serve-sim 的完整工作流
  • mcp-server-simulator-ios-idb — 另一个方向,通过 MCP 协议控制 iOS 模拟器,300+ stars

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询