每周都有人问:能不能在 Windows 或 Linux 机器上为 iOS 构建、测试并发布 Capacitor 应用?实话实说,除了少数例外,几乎所有事情都可以。本页就是参考:每项任务、是否需要 macOS,以及替代做法。
完整任务清单
| 任务 | 需要 macOS 吗? | 如何在 Windows 或 Linux 上操作 |
|---|---|---|
| 编写 App,在浏览器中运行 | 否 | 任何编辑器,任何操作系统 |
| Apple Developer Program 注册 | 否 | 浏览器 |
| 创建 App ID 和 App Store Connect 记录 | 否 | 浏览器 |
| 分发证书 | 否 | OpenSSL 或 证书生成器 |
| 描述文件 | 否 | Apple Developer 门户 |
| App Store Connect API 密钥 | 否 | App Store Connect 网站 |
cap add ios, cap sync ios |
否 | Capacitor CLI,出现 CocoaPods 警告是正常的 |
| 编译并签名 IPA 文件 | 是 | Capgo 构建 在云端运行 Xcode |
| 上传至 TestFlight | 是的,通常情况下 | Capgo Build 会使用您的 API 密钥进行上传 |
| 提交 App Store 审核 | 否 | App Store Connect 网站 |
| 安装到 iPhone 进行测试 | 否 | TestFlight 应用或 ad hoc IPA 链接 |
| 发布后推送更新 | 否 | Capgo Live Updates |
| iOS 模拟器 | 是 | 无法替代;请使用真实的 iPhone |
| iOS 上的 Safari Web Inspector | 是 | 远程日志,以及 Android 上用于共享 Web 层的 Chrome DevTools |
| 用于原生崩溃调试的 Xcode debugger | 是 | 需要时按小时租用 Mac |
编辑 Info.plist、entitlements、图标 |
否 | 纯文本和图像文件位于 ios/ |
| 添加一个带原生 iOS code 的 Capacitor 插件 | 否 | 安装, cap sync ios、云端构建 |
| 编写自定义 Swift code | 部分 | 用任意编辑器编辑;编译错误会显示在云端构建日志中 |
为什么编译需要 macOS
Apple 仅在 macOS 上提供 iOS SDK, xcodebuild 以及 codesign 且其授权与 Apple 硬件绑定。目前没有任何受支持的 Linux 或 Windows 工具链能生成符合商店标准的 IPA。虽然存在用于研究目的的 Linux 交叉编译 iOS 项目,但它们无法进行签名,也无法被 App Store Connect 接受。这就是为什么所有可行的“无 Mac”工作流最终都必须向 macOS 机器迈进一小步:即编译环节。
获取该机器的三种方式:
- 购买一台 Mac。 简单直接,但每当 Apple 提高 Xcode 最低版本要求时,你就需要更新。从 2026 年 4 月起,这意味着需要 Xcode 26,而这又需要较新版本的 macOS。
- 在云端租用 Mac。 拥有完全控制权,但也意味着完全的维护负担,且无论你是否进行构建,都会产生按小时计费的成本。
- 使用构建服务。 你只需发送项目,它会返回签名的 IPA 或直接完成上传。Capgo Build 就是这种方案,它会同步维护最新的 Xcode,因此 Apple 的版本截止日期不再是你的问题。
无 Mac 的最简工作流
# once
bunx cap add ios
bunx @capgo/cli@latest build init --platform ios
# every native release
bun run build
bunx cap sync ios
bunx @capgo/cli@latest build request com.example.app --platform ios --build-mode release
# every web-only change
bunx @capgo/cli@latest bundle upload --channel production
第一个阶段生成项目并保存签名凭据。第二个阶段产出已签名的 build 并发送到 TestFlight。第三个阶段在 Web 变更时完全跳过 Native Build。
详细指南: 在 Windows 上 以及 在 Linux 上.
不用 Keychain Access 管理证书
最让人望而生畏的部分。实际上只需三条 OpenSSL 命令和两个浏览器页面:
openssl genrsa -out ios_distribution.key 2048
openssl req -new -key ios_distribution.key -out ios_distribution.csr -subj "/emailAddress=you@example.com/CN=Your Name/C=US"
# upload the CSR in the Apple Developer portal, download distribution.cer
openssl x509 -in distribution.cer -inform DER -out distribution.pem -outform PEM
openssl pkcs12 -export -inkey ios_distribution.key -in distribution.pem -out ios_distribution.p12 -legacy
然后在门户中创建 App Store provisioning profile,并在 App Store Connect 中创建 API 密钥。 iOS 证书与 provisioning profile 详解 逐一讲解每种类型和错误。
不用 Simulator 测试
使用真机 iPhone。云端 build 完成后几分钟,build 就会进入 TestFlight,内部测试人员可跳过 Beta App Review。对于团队外的设备,请用以下命令请求 ad hoc build: --ios-distribution ad_hoc --output-upload 并分享链接。该 测试指南 覆盖整个流程,包括如何在没有 Safari 的情况下调试。
Native code 与插件
添加社区插件是一种 bun add 以及 cap sync ios; Swift code 在云端编译。用任何编辑器编写自定义插件的 Swift 代码也可以。你会失去自动补全和即时编译反馈,所以实际做法是让原生部分保持精简,尽早用云端调试构建编译,并从流式 Xcode 日志中读取错误。 --ai-analytics 把失败的构建变成通俗易懂的诊断。
何时仍需租用 Mac
- 无法从日志中解释、需要用 Xcode 调试器排查的原生崩溃。
- 每天迭代 Swift 的插件作者。
- 首次配置 App Store,想看一眼 Xcode 的签名 UI 来理解它。
对典型的 Capacitor 团队来说,这些都不是每周都会发生的事。真需要时租一小时 Mac,比给每个开发者配一台 Mac 更便宜。
相关配置指南
- 在 Windows 上开发 Capacitor
- 在 Linux 上开发 Capacitor
- 在 Windows 上通过 WSL2 使用 Capacitor
- 在 Windows 和 Linux 上对 Android 进行 Live reload
- 无需 Android Studio 的 Android release 构建
总结
在 Windows 或 Linux 上使用 Capacitor,就能涵盖设计、code、Android、证书、TestFlight 和 App Store 提交。只有编译环节是 Apple 专属,Capgo Build 会处理它。借助面向 Web 层的 Live Updates,完全没有 Mac 的团队也能让 iOS 与 Android 保持相同的发布节奏。