在 Xcode 中通过云端签名分发 App
Distribute apps in Xcode with cloud signing
2021年6月10日
一句话判断
Cloud Signing 终于让你不用再管本地证书和 provisioning profile 的同步问题——私钥存在 Apple 服务器上,团队成员谁都能签名。
这场 Session 讲了什么
Session 介绍了 Xcode 13 中引入的 Cloud Signing 功能。之前的签名流程需要本地管理证书(Certificate)和描述文件(Provisioning Profile),开发者在多台机器上工作时需要手动导出导入 .p12 文件和 .mobileprovision 文件。Cloud Signing 把私钥存储在 Apple 的服务器上,Xcode 在签名时自动从云端获取所需的证书和描述文件。
这意味着新加入团队的成员不需要找管理员要 .p12 文件,只需要在 Xcode 中登录自己的 Apple ID 并被添加到团队中,就能直接签名和运行 App。CI 环境也不再需要把证书和私钥作为机密变量注入——Xcode Cloud 自动处理。
Session 还涵盖了 App Store Connect 中的新分发流程改进,包括自动化的证书管理、简化的描述文件创建,以及 Xcode Organizer 中直接提交审核的流程。
值得深挖的点
”证书管理”这个痛点被消灭了
iOS 开发最被诟病的基础设施问题之一就是证书管理。一个团队只有有限个开发证书名额,证书过期或被撤销后所有人的本地签名全部失效。Cloud Signing 不是把证书搬到云端那么简单——它改变了整个信任模型。私钥从你的钥匙串移到了 Apple 的 HSM(硬件安全模块)中,签名操作在服务端完成,本地的 Xcode 只负责发起请求和接收结果。这让”证书泄露”和”证书名额耗尽”这两个老问题基本成为历史。
CI 环境的简化
对于 Xcode Cloud,Cloud Signing 是默认方式,不需要任何额外配置。对于其他 CI(如 GitHub Actions),你仍然需要用 API Key 来认证。但整体流程比以前简单很多——不再需要在 CI 脚本中 security import .p12 文件、用 fastlane match 同步证书了。
代码片段
启用 Cloud Signing
// Xcode > Settings > Accounts
// 选择你的 Apple ID > Manage Certificates...
// Xcode 13 会自动使用 Cloud Signing
// 验证是否使用 Cloud Signing:
// Build Settings > Signing > Code Signing Identity
// 如果显示 "Sign to Run Locally" 则使用的是 Cloud Signing
在 CI 中使用 Cloud Signing
// Xcode Cloud 自动使用 Cloud Signing,无需额外配置
// ci_scripts/ci_post_clone.sh 示例:
#!/bin/sh
# 不需要手动导入证书!
# Xcode Cloud 自动处理签名
xcodebuild archive \
-project MyProject.xcodeproj \
-scheme MyScheme \
-archivePath build/MyApp.xcarchive
xcodebuild -exportArchive \
-archivePath build/MyApp.xcarchive \
-exportOptionsPlist ExportOptions.plist \
-exportPath build/export
手动管理证书时的回退方案
// 如果团队仍需手动管理证书
// 1. 在 App Store Connect > Users and Access > Certificates 管理
// 2. Xcode > Settings > Accounts > Manage Certificates
// 3. 点击 "+" 添加新的开发或分发证书
// 关键:勾选 "Automatically manage signing"
// 这样 Xcode 会自动下载和更新描述文件
最佳实践
新团队: 直接用 Cloud Signing,不要手动管理证书。所有团队成员用自己的 Apple ID 登录 Xcode 就行。管理员在 App Store Connect 中控制谁有权限。
已有团队: 可以混合使用——本地证书和 Cloud Signing 共存。新成员用 Cloud Signing,老成员继续用本地证书。证书过期时切换到 Cloud Signing,不需要手动续期。
还有什么值得关注
- Cloud Signing 支持 Development 和 Distribution 两种证书类型。
- Xcode Organizer 中新增了直接提交 App 审核的工作流,不用打开 App Store Connect 网页。
- App Thinning 报告现在也在 Organizer 中可直接查看,可以看到每个设备的实际下载大小。