【问题标题】:Provisioning Profiles in Xcode - can't shift this errorXcode 中的 Provisioning Profiles - 无法改变这个错误
【发布时间】:2013-08-04 14:29:48
【问题描述】:

请不要在没有完整阅读的情况下将其视为重复 - 我已经搜索了网络和 stackoverflow 并发现了很多这样的问题,但没有一个修复工作,我不知道为什么。

开发中心的 xcode 配置仍然离线并没有帮助,但我应该仍然可以手动执行此操作。

我正在准备要提交的应用,但存档的代码签名不起作用。

Provisioning profile 'Company Distribution' specifies the
Application Identifier 'Company.*' which doesn't match the current
setting '2Cxxxxx3D5.Company.App'

所以问题是它认为配置文件没有我的苹果开发者 ID 的前缀,当您查看设置下的代码签名选项时,您会倾向于同意,它显示“公司分发配置文件包 'Company.*'"

但是,在管理器中,配置文件清楚地显示“2Cxxxxx3D5.Company.*”。应用程序 ID 在 Organizer 中是正确的,但由于某种原因在代码签名保管箱中是错误的。

目前为止

  1. 从我的机器中删除了所有配置文件
  2. 从 ios 中心删除所有配置文件
  3. 清理构建,清空构建目录
  4. 重启了我的mac
  5. 重新启动我的 iPad
  6. 使用 javascript hack 将设备 ID 插入到具有新 appID 的新配置文件中,重新下载并重新导入。

我再次遇到完全相同的错误,症状完全相同,我只是无法弄清楚为什么配置文件在 Organizer 中显然是正确的,但似乎没有转换到配置文件屏幕。

谁能给我任何见解? :)

【问题讨论】:

  • 我也遇到过这种情况。是否有多个开发人员在从事该项目?我会打开 .pbxproj 文件并删除对证书的所有引用。

标签: xcode profile provisioning


【解决方案1】:

啊,代码设计的乐趣——它让许多试图获得构建配置设置的开发人员绊倒了。这也是 Xcode 中的一些不同设置与您的 App Store 分发配置文件之间的不匹配。您必须确保三个位置设置相同,以确保清除此错误,每个位置都与 AppID 相关联。我回答了一个与开发证书和配置文件相关的类似问题,但是您的 App Store 分发证书和配置文件需要进行相同的检查:

A valid provisioning profile matching the application's identifier could not be found

该问题包括一些关于特定设置所在位置的附加信息,以及从代码到设备构建所经历的过程。可以使用几乎相同的过程来设置 App Store 分发 - 将“开发配置文件”中的引用替换为“应用商店分发”配置文件,并省略那些不适用于分发版本的测试设备配置,您应该很好。

您是否应该尝试使用您当前拥有的内容进行调试,然后继续阅读:

代码签名的核心是您的 AppID 需要在“证书、标识符和配置文件”工具发布的每个文档以及 Xcode 项目的构建配置中匹配。有几种方法可以解决此问题,或者更改您的配置文件和签名设置以匹配相同的 AppId,或者更改 AppID 以匹配您的配置文件。了解此决定的后果很重要——除非您特别需要共享钥匙串访问权限并且特别不需要任何授权服务(应用内购买、推送通知、iCloud、游戏中心、报亭、数据保护等),否则结果限制最少的选项是更改您的配置文件以匹配您当前的 AppId。

通往成功的协同设计构建的最快(但最严格)的途径

您对错误的描述肯定证实了根本问题——您有一个名为“Company Distribution”的分发配置文件设置为来自“Company.”证书、标识符和配置文件工具的 AppID,但是您的App 指定“2Cxxxxx3D5.Company.App”的 AppID,它与代码符号正在使用的 AppID 不匹配。换句话说,您的项目配置为在您尝试对捆绑包“Company.”进行代码签名时将捆绑包 ID 设置为“2Cxxxxx3D5.Company.App”。 “2Cxxxxx2D5”。部分违反了您(或者可能是 Xcode 自动配置文件选择器)为您的存档协同设计操作选择的配置文件。

“2Cxxxxx3D5”。您的 AppID 的一部分看起来很像 App ID 前缀——这应该在 Xcode App ID 字段(或在派生该字段值的 Info.plist 中指定。Xcode 自动处理应用程序根据用于进行代码签名的 Provisioning Provisioning Profile 为您提供 ID 前缀。如果您的 Xcode App ID 包含此前缀值,请将其删除,以便您的 App ID 变为“Company.App”。这样做,您的应用程序的 App ID 变为有效错误表明在代码签名期间正在使用“Company.*”分发配置配置文件的应用 ID。

更可持续的修复——修复 AppID 并重新发布分发配置文件

由于 Apple 继续发布基于“权利”的服务,因此在通配符 Provisioning Profile 下发布此应用程序可能不受欢迎。相反,保持最大灵活性的最佳方式是为您公司的应用程序发布一个显式 AppID,重新配置 Xcode,并为该新的显式 AppID 重新发布分发配置文件。上面的链接答案可作为分步指南,指导如何执行除分发配置文件之外的每项任务。概括地说,要完成的任务是:

  1. 更新 Xcode 项目中的 App ID 以省略 TeamID / App ID 前缀。
  2. 确保已编辑的 App ID 已使用 Apple 的证书、标识符和配置文件工具注册。
  3. 为新的准系统 App ID 发布分发配置文件
  4. 安装到 Xcode,重启 Xcode,然后确保 Codesign 设置使用新的 Provisioning Profile 和 Signing Identity。
  5. 运行存档。

一旦您的 App ID 与 Distribution Provisioning Profile 中编码的 ID 相匹配,您应该可以更好地运行存档。如果您遇到其他问题或问题,请对此答案发表评论,我们可以看看我们能做些什么。

【讨论】:

  • 感谢您提供非常详细和有用的答案!
  • 不客气!希望这有助于使代码符号在出现问题时稍微减少混乱或至少可诊断!
猜你喜欢
  • 1970-01-01
  • 2013-08-05
  • 2014-12-28
  • 2016-07-17
  • 2015-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多