Building and Shipping Mac and iOS Apps Without Ever Opening Xcode
547 points • 4 days agoArticle Link

开发和分发 Mac 和 iOS 应用并不需要持续使用 Xcode 的图形界面。虽然必须在系统上安装 Xcode,因为它包含 iOS SDK 、 notarytool 、 devicectl 等必要的命令行工具,但所有构建与部署工作都可以在终端 shell 中完成。唯一需要 GUI 的场景是一次性设置:配置 Apple Developer 账户、生成签名证书并将公证凭据存入 keychain 。

要摆脱传统的 Xcode 工作流,可以用 XcodeGen 管理项目结构。 Xcode 项目文件本质上是复杂的文件夹,变动频繁且容易与版本控制发生冲突。 XcodeGen 允许你在简洁的 YAML 文件中定义配置,并按需重建项目目录。这样,git 仓库只需追踪轻量的配置文件,整个构建过程也能保持可脚本化与可复现。

自动化发布流水线可以用自定义 shell 脚本实现,按序执行归档、签名、公证和安装等标准命令。结合 notarytool 进行恶意软件扫描、用 stapler 附加公证票据,可以复刻 Xcode Organizer 中的步骤。脚本还可以加入签名需求检查与最终 bundle 验证等环节,确保部署过程稳健并能在后台自动完成。

为了让 AI 编码助手无缝对接这套流程,建议编写项目文档(例如 CLAUDE.md),明确说明构建与发布命令。一旦 agent 理解了这些约定及发布脚本的结构,就能独立完成整个构建与测试周期。这既允许你快速进行未签名的本地构建以做初步检查,也能在准备分发时执行完整的签名与公证流程。

总体而言,这种无头方法将复杂的应用开发生命周期转化为一系列可预测、可重复的命令行操作。将这些任务委托给 LLM,可以避免 Xcode 那种不透明界面带来的手动开销。初始基础设施建立完毕后,生成、测试与交付专业级应用往往只需执行一条命令,从而显著简化开发体验。

232 comments • Comments Link

• 在 Linux 或 WSL 上构建并测试 iOS 应用变得越来越可行:借助 xtool 、 sideloadly 等工具,可以绕过传统的 Xcode 流程,直接通过 USB 安装应用。

• 像 Claude 这样的 LLM 正被用来自动化复杂的构建链——包括代码签名、公证和分发——它们有效地充当了处理 Xcode 复杂性的接口,无需依赖图形界面(GUI)。

• 当前的开发体验正在向"vibe coding"转变,即由 AI 代理管理基础设施和构建流水线,但这通常要求将敏感凭据、证书和源码的访问权限授予这些工具。

• 在 LLM 辅助开发方面,Expo 和 React Native 常被认为优于原生 Swift:它们在训练数据中更常见,且提供可预期的 CLI 优先工作流,从而避免了许多 Apple 特有的构建怪癖。

• Fastlane 等现有社区工具仍是稳健自动化的标准做法,但越来越多开发者开始用 LLM 生成定制化、面向具体项目的脚本,以减少依赖管理的负担。

• 如果没有 Apple ID 和付费开发者账号,面向 Apple 生态的开发本质上仍然困难——即便是纯命令行的工作流,最终也会遇到需要官方认证或接受 EULA 的障碍。

• 部分开发者正在构建专门的 CLI 包装器和沙箱工具(例如 Axiom 、 Sweetpad 和 yoloai),以提升 AI 编码代理在 Apple 平台上的 token 效率和安全性。

• 人们对通过 AI 自动化生成软件的质量持怀疑态度;有人担心降低门槛会让 App Store 充斥更多低质量的"slop"。

• 对 AI 管理构建环境的依赖也带来了循环依赖问题:开发者不得不使用 LLM 去调试那些由 LLM 自身生成的构建脚本,以绕过这些工具本身难以处理的情况。

• 尽管 AI 驱动的工作流看起来新颖,但许多底层技术(如无头构建和基于 CLI 的分发)长期以来就是企业 CI/CD 的常态。

向 AI 辅助的 Apple 平台开发转变,标志着从手动、依赖 GUI 的工作流向自动化、以 CLI 为中心的流水线的重要演进。这一转变既让开发者能更少依赖 Xcode 并实现跨平台构建,也带来了新的安全隐患和可能导致低质量应用增多的问题。尽管越来越多定制化的 AI 生成脚本在涌现,社区共识依然认为 Expo 、 Fastlane 等成熟框架是实现长期、可扩展开发的更可靠选择。最终,AI 虽然减少了与复杂 Apple API 交互的摩擦,但生态系统对专有 ID 和认证的底层依赖,仍然构成任何自动化难以完全消除的结构性障碍。