首段结论
Bundle ID 也就是应用唯一标识,校验不通过,绝大多数原因是命名格式错误、和苹果开发者账号已注册 ID 冲突、工程配置和证书描述文件不匹配、大小写或者特殊字符写错,iOS 上架、打包签名的时候最容易碰到这个报错,核心思路就是先核对命名规则,再检查开发者后台注册记录,最后同步工程、证书、描述文件三处配置,保证三处 Bundle ID 完全一致,就能解决大部分校验失败问题。
一、Bundle ID 命名规范(最常见错误源头)
1 推荐反向域名格式,例如 com.xxx.app
2 只允许小写字母、数字、点号、短横线,不能有中文、空格、下划线、大写字母(部分场景大写会报错)
3 不能以点开头或者结尾,不能连续两个点
4 长度不能超出苹果限制,不能使用保留关键字
5 必须全局唯一,同一个开发者账号下不能重复注册相同 Bundle ID
二、报错原因清单
| 报错原因 | 现象说明 |
|---|---|
| 格式非法 | 含有非法字符,命名不符合反向域名规则 |
| ID 重复 | 开发者后台已经注册过这个 Bundle ID,再次新建校验失败 |
| 三处不一致 | Xcode 工程 Info 里面 Bundle Identifier、开发者后台 App ID、Provisioning 描述文件三者 ID 不相同 |
| 通配符冲突 | 使用通配符 * 类型 App ID,但是应用需要推送、内购等能力,不支持通配符 |
| 缓存残留 | Xcode 旧缓存,修改 ID 之后没有刷新描述文件 |
| 账号权限问题 | 开发者账号权限不足,没有创建 App ID 权限 |
三、解决操作步骤
第一步 核对命名,按照反向域名规范修改 Bundle ID,删除非法字符
第二步 登录 Apple Developer 后台,进入 Identifiers,查询这个 Bundle ID 是否已经存在
第三步 如果已经存在,直接复用已有 App ID,不要重复新建;如果不存在,新建 App ID,勾选对应的 App 能力
第四步 打开 Xcode 工程,修改 Info 里面 Bundle Identifier,和后台 App ID 保持完全一致,大小写也不能错
第五步 重新生成或者下载对应的 Provisioning Profile 描述文件,在 Xcode 里面重新选择签名描述文件
第六步 清理 Xcode 缓存:Product → Clean Build Folder,重启 Xcode,重新 Archive 打包校验
第七步 如果使用通配符 App ID,并且开启了推送、内购、Sign In with Apple 这类功能,需要改成显式 App ID,不能继续使用 通配符
四、进阶排查要点
1 区分 App ID 和 Bundle ID,后台 Identifiers 创建的就是 App ID,它的 Identifier 字段就是 Bundle ID
2 多 Target 项目,每个 Target 都要单独检查 Bundle ID,子 Target 很容易遗漏修改
3 如果是 TestFlight 或者 App Store Connect 校验报错,确认 App Store Connect 里面创建的 App,Bundle ID 和打包包体里面 ID 一致
4 企业证书、个人证书、团队证书,对应的描述文件都要重新匹配新 Bundle ID
FAQ
问题 1 bundle id 校验不通过 是不是只要改名字就可以?
回答 1 不一定,如果只是格式错误改名字即可,如果是 ID 已经注册冲突,需要复用后台已有 App ID,并且同步更新签名描述文件
问题 2 bundle id 校验不通过 大小写不一样算不算错误?
回答 2 算,苹果校验是严格匹配,Xcode 工程、后台 App ID、描述文件大小写必须完全相同
问题 3 bundle id 校验不通过 通配符 为什么不行?
回答 3 通配符 App ID 不支持推送、内购等高级能力,一旦开启这些功能,校验就会失败,必须换成显式固定 Bundle ID
问题 4 bundle id 校验不通过 修改之后还是报错怎么办?
回答 4 清理 Xcode 缓存,删除旧描述文件,重新下载安装新的 Provisioning Profile,确认当前登录的开发者团队账号正确
免责声明
本文为 iOS 开发通用排查教程,苹果开发者后台规则、Xcode 版本校验逻辑会随官方更新发生变化,具体报错请结合官方错误提示以及苹果开发者文档为准,本文不替代苹果官方开发文档。


