啊,代码设计的乐趣——它让许多试图获得构建配置设置的开发人员绊倒了。这也是 Xcode 中的一些不同设置与您的 App Store 分发配置文件之间的不匹配。您必须确保三个位置设置相同,以确保清除此错误,每个位置都与 AppID 相关联。我回答了与开发证书和配置文件有关的类似问题,但是您的 App Store 分发证书和配置文件需要进行相同的检查:
找不到与应用程序标识符匹配的有效配置文件
该问题包括一些关于特定设置所在位置的附加信息,以及从代码到设备构建的过程。可以使用几乎相同的过程来设置 App Store 分发 - 将“开发配置文件”中的引用替换为“应用商店分发”配置文件,并省略那些不适用于分发版本的测试设备配置,您应该很好走。
如果您更愿意尝试使用您当前拥有的内容进行调试,请继续阅读:
代码签名的核心是您的 AppID 需要在“证书、标识符和配置文件”工具发布的每个文档以及 Xcode 项目的构建配置中匹配。有几种方法可以解决此问题,或者更改您的配置文件和签名设置以匹配相同的 AppId,或者更改 AppID 以匹配您的配置文件。了解此决定的后果很重要——除非您特别需要共享钥匙串访问权限并且特别不需要任何授权服务(应用内购买、推送通知、iCloud、游戏中心、报亭、数据保护等),否则具有最少限制结果的选项是更改您的配置文件以匹配您当前的 AppId。
成功的协同设计构建的最快(但最严格)的途径
您对错误的描述肯定确认了根本问题——您有一个名为“Company Distribution”的分发配置文件设置为来自证书、标识符和配置文件工具的 AppID,即“Company。”,但是您的 App 指定的 AppID 为“ 2Cxxxxx3D5.Company.App" 与代码符号使用的 AppID 不匹配。换句话说,您的项目配置为在您尝试对捆绑包“Company.”进行代码签名时将捆绑包 ID 设置为“2Cxxxxx3D5.Company.App”。“2Cxxxxx2D5”。部分违反了您(或者可能是 Xcode 自动配置文件选择器)为您的存档协同设计操作选择的配置文件。
“2Cxxxxx3D5”。您的 AppID 的一部分看起来很像 App ID 前缀——这不应该在 Xcode App ID 字段中指定(或在派生该字段值的 Info.plist 中指定。Xcode 会根据Provisioning Provisioning Profile 用于进行代码签名。如果您的 Xcode App ID 包含此前缀值,请将其删除,以便您的 App ID 变为“Company.App”。这样做时,您的应用程序的 App ID 将成为给定“Company.App”的有效 App ID。 *" 错误指示在代码签名期间正在使用的分发供应配置文件。
更可持续的修复——修复 AppID 并重新发布分发配置文件
由于 Apple 继续发布基于“权利”的服务,因此在通配符 Provisioning Profile 下发布此应用程序可能不受欢迎。相反,保持最大灵活性的最佳方式是为您公司的应用程序发布一个显式 AppID,重新配置 Xcode,并为该新的显式 AppID 重新发布分发配置文件。上面的链接答案可作为分步指南,指导如何执行除分发配置文件之外的每项任务。概括地说,要完成的任务是:
- 更新 Xcode 项目中的 App ID 以省略 TeamID / App ID Prefix。
- 确保已编辑的 App ID 已使用 Apple 的证书、标识符和配置文件工具注册。
- 为新的准系统 App ID 发布分发配置文件
- 安装到 Xcode,重新启动 Xcode,然后确保 Codesign 设置使用新的 Provisioning Profile 和 Signing Identity。
- 运行存档。
一旦您获得与分发配置文件中编码的应用 ID 匹配的应用 ID,您应该处于更好的状态来运行您的存档。如果您遇到其他问题或问题,请对此答案发表评论,我们可以看到我们能做些什么。