集成Apple 平台
00 / 00

签名、证书和描述文件

用新手能理解的方式解释 Apple 为什么要签名,以及证书、profile、EAS 的关系

创建 Bundle ID 只是给 App 取了一个固定身份证号。Apple 还要确认「这个安装包真的是这个团队做的,并且它被允许使用这些系统能力」。这就是签名、证书和 provisioning profile 要解决的问题。

为什么要签名

Apple 的签名机制主要解决三件事:

  • 证明 App 来源,系统知道这个包来自哪个开发团队。
  • 防止包被改,签名后内容被篡改,系统能发现。
  • 约束能力,App 只能使用 profile 里允许的 App ID、设备、能力和分发方式。
Bundle ID
这个包说自己是谁。
Certificate
这个包由哪个团队签出来。
Provisioning Profile
Apple 批准这个组合能怎么运行。
Signed Build
最终能安装、测试或上传审核的包。

三个核心东西

名称人话解释常见来源
Certificate,证书开发团队的签字笔。没有它,包没有可信来源Apple Developer 后台创建,或 EAS/Xcode 自动创建
Private Key,私钥签字笔真正的笔芯。丢了证书就无法在这台机器继续签生成 CSR 的机器或 EAS 托管凭据里保存
Provisioning Profile,描述文件Apple 批准书。写明哪个 App ID、哪些能力、哪类分发能用Apple Developer 后台创建,或 EAS/Xcode 自动创建

CSR 是 Certificate Signing Request。手动创建证书时,你在本机生成 CSR,Apple 根据 CSR 签发证书,私钥留在本机钥匙串里。

开发、TestFlight、正式分发有什么区别

场景常见证书profile用途
本机开发Apple Developmentdevelopment profile装到自己的设备或模拟器调试。
TestFlight / App StoreApple DistributionApp Store profile上传到 App Store Connect,再走 TestFlight 或审核。
macOS 官网下载Developer ID Application通常不走 iOS profile 逻辑签名后还要 notarization,让 Gatekeeper 信任。

EAS 在这里做什么

Expo EAS 可以托管 iOS 签名凭据。你执行生产构建时,EAS 会根据 app.jsonios.bundleIdentifier 和 Apple 团队信息,准备或复用这些东西:

  • App Identifier,也就是 Apple Developer 里的 App ID。
  • Distribution certificate。
  • Provisioning profile。
  • Push key 等可选凭据。

如果你已经手动在 Apple Developer 里注册了 App ID,EAS 会复用这个固定 Bundle ID。正式项目建议先手动注册 App ID 和 capabilities,再让 EAS 处理证书和 profile,这样不容易生成偏离预期的身份。

移动端接下来要做什么

如果你正在把 01MVP mobile 改成自己的 iOS App,按这个顺序处理:

  1. products/01mvp/apps/mobile/app.json 固定 expo.ios.bundleIdentifier
  2. 在 Apple Developer 注册同一个 App ID,并开启当前需要的 capabilities。
  3. 用 EAS Build 生成 development build,先确认真机能安装和运行。
  4. 用 preview build 做内测,iOS Ad Hoc 设备要先登记。
  5. 准备 production build 和 App Store Connect app record,再提交 TestFlight 或审核。

更具体的移动端落地流程见 Apple 与 iOS 配置

什么时候可以让 EAS 自动签名

适合让 EAS 自动管理:

  • 你用 Expo / EAS Build 构建 iOS。
  • 你愿意让 EAS 托管 Apple signing credentials。
  • App ID 和 capabilities 已经在 Apple Developer 后台确认无误。

适合手动管理:

  • 公司有严格的证书权限管理。
  • 不希望第三方托管 signing credentials。
  • 多个构建系统要共用同一套证书。

官方资料

这篇文档有问题?