Provisioning Profiles(描述文件)
描述文件 = 证书 + App ID +(可选)设备。变更任一要素后都要重新生成/下载——这是整个签名体系里最重要的一句话。
描述文件类型
| 类型 | 用途 | 组成要素 | 典型场景 |
|---|---|---|---|
| Development | 开发调试 | 开发证书 + App ID + 设备 | Xcode 真机调试 |
| Ad Hoc | 定向分发测试 | 发布证书 + App ID + 设备 | 不装 TestFlight 的真机分发 |
| App Store | 上架 | 发布证书 + App ID(无需设备) | 提审 / 上传构建 |
| In-House(企业) | 企业内部 | 企业证书 + App ID | 企业内部分发(需企业账号) |
创建步骤
- 进入 Certificates, Identifiers & Profiles → Profiles → “+”。
- 选择描述文件类型(Development / Ad Hoc / App Store)。
- 选择证书(优先最新的 Distribution 或 Development 证书)。
- 选择 App ID(确保已开启所需能力)。
- 若为 Development / Ad Hoc,选择设备列表。
- 命名并下载
.mobileprovision,导入 Xcode / CI。
Xcode 自动签名 vs 手动签名
| 方式 | 说明 | 适用 |
|---|---|---|
| 自动签名(推荐) | 登录 Apple ID 后 Xcode 自动管理证书与描述文件 | 个人 / 小团队 |
| 手动签名 | 手动选择证书与描述文件 | CI、复杂多环境 |
自动签名适合日常开发;CI 打包通常用手动签名或 fastlane 的
match 方案统一管理证书/描述文件,保证可复现。维护与更新
- 证书续期、设备变更、能力新增后,都需要重新生成描述文件。
- CI 场景:更新证书与描述文件后重新构建;用 fastlane
match可把证书/描述文件集中托管。 - 一个描述文件到期不影响已发布 App,只影响「新的构建签名」。
常见问题排查
| 报错 / 现象 | 排查思路 |
|---|---|
| No provisioning profile found | 检查 App ID、证书、设备是否都就绪;重新生成描述文件 |
| Profile doesn’t include the device | 在描述文件中加入该设备 UDID 并重新生成 |
| Entitlements mismatch | 检查 App ID 能力与 Xcode 配置是否一致 |
| 证书不匹配 | 描述文件引用的证书必须与钥匙串中私钥对应 |
自检清单
- 已按环境创建正确的描述文件类型
- 描述文件引用的证书有效且含私钥
- 新增能力 / 设备后已重新生成描述文件
- CI / Xcode 已更新到最新描述文件
- 提审构建使用 App Store / Distribution 签名
作者说
签名报错 90% 都指向同一件事:证书、App ID、设备三者中至少有一处和描述文件对不上。遇到报错不要慌,按「描述文件 = 证书 + App ID + 设备」逐项核对,通常几分钟就能定位。
