每一刻,都值得记录
← 返回首页

Xcode 27.2 现已支持全新的 JSON 项目文件格式

文章封面

Xcode 27.2 现已支持全新的 JSON 项目文件格式

Xcode 27.2 Now Supports a New JSON Project File Format — daringfireball.net · 3 小时前 · 🛠 工具 / 开源

Xcode 27.2 现已支持全新的 JSON 项目文件格式

Xcode 沿用二十余年的 .pbxproj 工程文件格式,长期被视为苹果开发生态中最不透明、最难维护的一环:它以 OpenStep 风格的 plist 语法书写,内部充斥着由 24 位十六进制字符串构成的唯一标识符,任何一次增删文件、调整 build phase 或修改构建设置,都会在 Git diff 里产生大段难以阅读的变更,多人协作时更是合并冲突的重灾区。Xcode 27.2 带来的变化是,苹果正式为工程文件引入基于 JSON 的新格式 .xcproj,开发者可以在 Xcode 的 file inspector 中为项目启用。苹果给出的三个卖点非常明确:可读性更高、对版本控制的合并更友好、并且更容易被编码代理读取和修改。更值得注意的是兼容性设计——采用 .xcproj 的项目依然可以被较早版本的 Xcode 27 打开,这意味着团队不必强制所有人立刻升级到 27.2,迁移风险被显著压低。配套动作同样关键:苹果已经在 GitHub 上开源了一个 Swift 库和对应的命令行工具,用来读取、写入和操作这一新格式,等于把工程文件从 Xcode 的私有黑箱,变成了一套可以被程序化处理的公开数据模型。Michael Tsai 在其博客上整理了开发者对新格式的反应,几乎是一致好评,Simon B. Støvring 等人的评价也被收录其中。工程文件之所以重要,是因为它是整个代码库的真相来源:CI 流水线、依赖管理、代码审查乃至如今越来越多的 AI 编码代理,最终都要落到对工程配置的读写上。过去为了绕开 .pbxproj 的复杂度,社区不得不发明 XcodeGen、Tuist 这类用声明式配置反向生成工程的旁路方案,而新格式配合官方 Swift 库,可能会让这类工具的必要性下降,也可能反过来让它们更容易实现。当然,.xcproj 目前仍处于可选启用的阶段,Xcode 默认格式是否以及何时切换、第三方工具链跟进的速度、大型 monorepo 在混合格式下的表现,都还需要时间检验,但方向上这是 Xcode 工程文件格式多年来最实质性的一次现代化改造。

核心论点

  • Xcode 27.2 引入的 .xcproj 是一个纯 JSON 的工程文件格式,开发者可以在 Xcode 的 file inspector 中为项目手动启用,苹果官方给出的三个卖点是:比沿用 OpenStep plist 语法的 .pbxproj 更可读、对 Git 合并更友好、也更容易被编码代理编辑;同时,使用 .xcproj 的项目依然能在更早的 Xcode 27 版本中打开,这种前向兼容让团队不必强制所有人同时升级 IDE。旧格式的痛点集中在两点:一是工程文件里几乎所有对象都靠 24 位十六进制 UUID 相互引用,人眼无法判断某个标识符对应哪个 target 或哪个文件;二是任何结构性改动都会重排引用,导致 diff 噪音大、多人并行开发时冲突频发,而 JSON 格式在结构可读性与合并粒度上都有本质改善。
  • 苹果在 GitHub 上同步发布了一个 Swift 库以及配套的命令行工具,用于读取、写入和操作 .xcproj 这一新格式,这一点可能比格式本身更具长期影响:它意味着工程文件第一次有了官方支持的、可编程的读写接口,CI 流水线、依赖管理工具、代码生成器以及 AI 编码代理都不再需要逆向解析私有格式。过去社区要绕开 .pbxproj 的复杂度,只能依赖 Tuist 的 XcodeProj 库,或者干脆用 XcodeGen、Tuist 这类工具从 YAML 或 JSON 声明式配置反向生成工程文件,代价是引入额外的中间层与同步成本;有了官方 Swift 库和 CLI,这些工具可以把精力放在更高层的抽象上,而代理在新增文件、新增 target、调整 build settings 这类操作上也能安全落地,不必担心破坏 UUID 引用图。
  • Michael Tsai 在其博客上汇总了开发者对新格式的反应,几乎清一色正面,Simon B. Støvring 等人的评论也被收录其中,这种罕见的一致好评本身就说明 .pbxproj 的积怨有多深。放到更大的背景下看,工程文件是代码库的真相来源:CI 配置、代码审查、依赖解析和自动化重构最终都要读写它,而 AI 编码代理的普及让工程文件的可程序化程度直接决定了代理能自动化到什么程度——代理要完成「加一个文件并把它加入正确的 target」这种任务,旧格式几乎注定出错,新格式则天然适配。需要保留的观察点包括:苹果是否会在未来把 .xcproj 设为默认格式、第三方工具链跟进的节奏,以及混合格式的大型 monorepo 在过渡期的表现。

💡 为什么值得读: 如果你在维护 iOS 或 macOS 工程、编写 CI 脚本、做工程生成工具,或者正在让 AI 编码代理直接改工程配置,这次格式变更是多年来最值得提前判断迁移时机的一次基础设施升级,而且官方工具与社区反馈都已经摆在那里。

🏷️ Xcode, JSON, xcproj, coding agents


感谢读到这里。

留下一点回声

MY LITTLE COLLECTION

本地收藏夹

仅保存在当前浏览器,不会同步到其他设备。清理网站数据会删除收藏与阅读记忆。

QUICK ACCESS · 快捷指令

↑ ↓ 选择 · Enter 执行 · Esc 关闭

MAKE YOURSELF AT HOME

阅读与场景

阅读外观

应用于文章和独立页面,偏好仅保存在当前浏览器。

季节场景

系统减少动态效果、后台标签页及沉浸阅读时自动暂停。

本地数据备份

备份收藏、阅读进度和外观偏好。文件不上传服务器,仅支持同站点备份;导入时合并数据。