告别Xcode:如何在不打开IDE的情况下构建和发布Mac与iOS应用
近期不少Apple相关播客都在吐槽Xcode体验糟糕,呼吁苹果改进“氛围编码”流程。但问题是——为什么非要打开Xcode不可?通过少量前期准备,你完全可以抛开Xcode,用命令行和LLM工具高效构建、签名、公证并部署Mac和iOS应用。
核心思路:Xcode安装但永不打开
Xcode.app必须存在,因为它包含了 xcodebuild、notarytool、stapler 和 devicectl 等关键命令行工具。但这些工具完全可以在Shell中运行,无需启动GUI。你只需要一次性通过图形界面(或交互式终端)完成Apple ID登录、创建Developer ID证书、存储公证密码等步骤,后续所有构建和部署都可以全自动化。
一次性准备:把最繁琐的部分搞定
安装Xcode并确认命令行工具链:确保
xcode-select -p返回/Applications/Xcode.app/Contents/Developer,而非独立的Command Line Tools路径。独立的CLT不包含iOS SDK、notarytool等完整开发所需组件。使用XcodeGen生成项目文件:Xcode本身的项目格式(.xcodeproj)易冲突且难以版本控制。XcodeGen允许你用YAML描述项目结构,自动生成Xcode项目文件,避免手动编辑。
配置签名与公证凭证:在钥匙串中创建Developer ID证书,并通过
xcrun notarytool store-credentials存储公证密码。签名密钥存在于登录钥匙串中,xcodebuild会自动找到,无需将密钥存入仓库。
自动化脚本:一键走完完整流程
编写一个 scripts/release.sh 脚本,执行以下链条:
- 使用
xcodebuild archive归档项目 - 用
codesign进行Developer ID签名 - 通过
notarytool submit提交公证 - 使用
stapler staple钉上公证票据 - 最后安装到
/Applications目录
整个过程无需打开Xcode,甚至可以在CI/CD流水线中运行。
调试与设备部署
日志查看:使用 log stream 和 Console.app 替代Xcode的调试控制台。
设备安装:通过 devicectl 命令将应用安装到连接的iPhone或iPad上,同样无需Xcode。
为什么这很重要?
这种“无Xcode”工作流特别适合:
- 习惯使用终端和文本编辑器的开发者
- 需要自动化构建和部署的团队
- 希望利用LLM(如Claude Code)编写代码的“氛围编码”实践者
当你遇到具体实现问题时,只需将本博客文章作为上下文提供给LLM工具,它就能帮你解决细节。毕竟,这正是LLM最擅长的——替你搞清楚那些你不想深究的事情。
小结
告别Xcode并不意味着放弃苹果生态的开发能力,而是将工具链从IDE转移到命令行和自动化脚本。虽然前期需要一次性的配置投入,但换来的是更快速、更可控、更适合自动化的开发体验。苹果或许会改进Xcode,但在此之前,我们已经有了一条更轻盈的路径。



