苹果上架要用的证书和描述文件
苹果上架时的签名报错,多半是三样东西没对上:证书、App ID、描述文件。先分清它们,再决定用自动签名还是手动签名。
01三样东西各管什么
| 文件 | 作用 | 上架时用哪一个 |
|---|---|---|
| 证书 | 证明这个包是你的开发者账号签的 | 发给 App Store 用 Distribution(发布)证书 |
| App ID | 应用的唯一标识,后缀就是 Bundle ID | 和 Xcode、App Store Connect 里的包名必须相同 |
| 描述文件 | 把证书、App ID 和分发方式绑在一起 | 上架用 App Store 类型,不是 Ad Hoc |
Bundle ID 一旦用于上架就不要改。推送、登录、内购等能力开在这个 App ID 上,和第三方 SDK 也绑在这个包名上。
02开发和发布不要混用
- 开发证书:装到自己的测试设备上调试,不能拿去提交 App Store。
- 发布证书:用来归档并上传。用它打出来的包不能直接装到手机上,这是正常的。
- Ad Hoc 描述文件:装给最多 100 台登记过 UDID 的设备,用来小范围测试,不是上架通道。
- 企业描述文件属于 Enterprise 计划,不能用来把应用公开装到任意用户手机上。
证书一般一年到期。到期后已上架的应用不会立刻从商店消失,但你无法再上传新构建,直到换发证书并重新签名。
03推荐路径:让 Xcode 管签名
- Xcode 登录付费开发者账号。
- 目标选 Automatically manage signing,Team 选对。
- Bundle ID 与 App Store Connect 里创建应用时的一致。
- 需要的能力在 Signing & Capabilities 里打开,保存后 Xcode 会更新描述文件。
- 选 Any iOS Device,Product → Archive,再用 Organizer 或 Transporter 上传。
团队里不要每人各做一套证书。一个人开启自动签名,其他人用同一团队账号拉取即可。
04必须手动做时
在 Mac 的钥匙串访问里生成证书请求(CSR),把 CSR 上传到开发者网站换取证书。私钥留在这台 Mac 上,不要把私钥交给网站或聊天记录。
- 先建 App ID,再选发布证书,再生成 App Store 描述文件。
- 打包工具里同时选中发布证书和对应的描述文件。
- 报错先看三处包名是否一致,再看证书有没有过期、描述文件是不是 Development。
05签名报错先对这张表
| 报错大概在说 | 先看 |
|---|---|
| 找不到签名证书 | 发布证书是否过期,Xcode 是否登着正确的团队 |
| 描述文件不匹配 | 描述文件里的 Bundle ID 和工程是不是同一个 |
| 缺少私钥 | 证书是在另一台电脑上生成的,私钥没有在这台 Mac 上 |
| 用了开发描述文件 | 上架要换成 App Store 类型,不是 Development |
对上之后只改一项再打包。一次改证书、包名和描述文件,下次就分不清是哪一项好了。
问常见问题
没有 Mac 能做发布证书吗?
CSR 和私钥应在你自己控制的电脑上生成。借用云端 Mac 可以,但不要把私钥上传到来路不明的在线生成网站。
自动签名和手动签名能一起开吗?
同一个目标不要混用。自动签名开启时,再手动指定另一份描述文件,很容易签到错误的包。
换了证书,用户要重装吗?
同一团队、同一 Bundle ID 下更新证书,商店里的用户收到的是正常更新,不用卸载。