证书与签名

签名是 iOS 开发者最容易困惑、也最容易踩坑的环节。本章把 证书(Certificate)→ App ID(Identifier)→ 设备(Device)→ 描述文件(Provisioning Profile) 四者的关系彻底讲透。理解了这层关系,绝大多数签名报错你都能自己定位。

本章从一个几乎人人都会先卡住的区分讲起:开发证书签的是装在自己设备上的构建,发布证书签的是通过 TestFlight 或 App Store 装到别人设备上的构建。接着沿着这条链向外走——App ID 是从 Bundle ID 派生出来的,创建之后不可更改,所以在这里打错一个字,代价就是丢掉这个标识符以及注册在它名下的所有东西。然后描述文件登场,它才是真正把三者绑在一起的那份文件;不同类型的描述文件(Development、Ad Hoc 和 App Store)差别就落在它们各自带的是哪一张证书和哪一份设备列表。设备注册是最后一块拼图,而「UDID 到底什么时候必须注册」这个问题——TestFlight 并不需要——答案不在死记规则,而在于搞清楚每种描述文件各自是给什么场景用的。

读完这一章,你将能够凭记忆画出「证书 + App ID + 设备 → 描述文件」的关系,并解释为什么改动其中任何一要素都会让描述文件失效、必须重新生成;能同时创建开发证书与发布证书,并把 .p12 文件妥善备份在安全的地方;能显式创建 App ID,只开启这个 App 真正用得到的 Capabilities;也能一眼分辨 Development、Ad Hoc 和 App Store 三种描述文件。更重要的是,你能读懂初学者反馈最多的两条报错——「No valid signing certificate」和「Profile doesn’t include the device」——并沿着链条回溯到出错的那一环。依赖 Xcode 自动签名的同学,先理解原理,再把日常交给 Xcode 处理,因为真正救你的正是知道它背后在做什么;用 CI 打包的团队则要仔细读证书与描述文件的维护部分,并配合 fastlane 的文档来看,因为这是 CI 签名的硬前提而不是可选项。至于正在盯着某一条具体报错的时候,就把 FAQ 部分当成一张速查表,把症状对号入座。

章节

发现内容有问题?

告诉我们哪里需要改进。