集成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 Development | development profile | 装到自己的设备或模拟器调试。 |
| TestFlight / App Store | Apple Distribution | App Store profile | 上传到 App Store Connect,再走 TestFlight 或审核。 |
| macOS 官网下载 | Developer ID Application | 通常不走 iOS profile 逻辑 | 签名后还要 notarization,让 Gatekeeper 信任。 |
EAS 在这里做什么
Expo EAS 可以托管 iOS 签名凭据。你执行生产构建时,EAS 会根据 app.json 的 ios.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,按这个顺序处理:
- 在
products/01mvp/apps/mobile/app.json固定expo.ios.bundleIdentifier。 - 在 Apple Developer 注册同一个 App ID,并开启当前需要的 capabilities。
- 用 EAS Build 生成 development build,先确认真机能安装和运行。
- 用 preview build 做内测,iOS Ad Hoc 设备要先登记。
- 准备 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。
- 多个构建系统要共用同一套证书。
官方资料
这篇文档有问题?