Xcode 5: 代码签名权限错误

我已经构建了一个支持 IOS 7的新应用程序。我得到了新的 XCode5GM,并试图签署我的应用程序使用我的新供应配置文件和发行证书,但我有麻烦与发行。我经常得到以下错误:

”无效的代码签名权限。应用程序中的权限 包签名与包含在 供应配置文件。根据供应配置文件, Bundle 包含一个不允许的键值: ’[ XXXX.com.sample.company ]’表示密钥‘ keychain-access-groups’。

对于称为 application-identifier的键值也是同样的错误。

错误截图:

enter image description here

79996 次浏览

解决方案在于 Xcode 5中的新选项,它表示配置文件。只要将项目目标的供应配置文件设置为正确的配置文件,它就会工作。

enter image description here

在我的例子中,我遇到了同样的问题,我的解决方案是在进行归档之前更改构建设置中的“发布供应配置文件”。我这样做了两次,一次是为了应用程序商店发行版,另一次是为了 Ad Hoc 发行版。我还在我的档案中添加了一条评论。我的结论是,关于“档案重新签名”有些东西被打破了。

在我的例子中,我必须为发布设置正确的供应配置文件,然后必须重新启动 Xcode。在重新启动之前,它具有相同的条款配置文件,并且没有工作。所以,有时候重启可以创造奇迹。也许这对某人有帮助。

如果您正在构建一个旧的3.1.5项目,Xcode 5有一些错误,不幸的是,这使得 Benjamin 的答案不可能,因为没有供应配置文件可供选择。经过许多个小时痛苦地阅读 Xcode 项目文件后,我想出了这个适合我的解决方案:

  • 在 Xcode 5的“实用程序”窗格(右侧)的“项目文档”下,将 Xcode 3.1兼容更改为 Xcode 3.2兼容。
  • 输入您的组织名称。
  • 完成任务。
  • 打开项目文件,例如 open -a TextEdit path/to/name.xcodeproj/project.pbxproj
    • 删除两个分发子句(isa=XCBuildConfiguration)。
    • 删除 buildConfiguration 中的两行附带代码(一行在 PBXNativeTarget中,一行在 PBXProjectXCConfigurationLists中)

现在你已经准备好重新打开,存档,并提交到应用程序商店-瞧! 它再次工作!

我怎么想的

我认为这是因为苹果公司决定放弃任何单独的发行配置,这是一件好事。当我归档时,Xcode 会自动为发行版编码标志。这就是它应该首先实现的方式,只是遗憾的是,苹果不能让自动迁移成为 IDE 的一部分; 相反,他们迫使我们开发人员花费几十年的时间来使这些东西工作。

我经历了上述许多步骤,但最终对我有效的是更新我在 Xcode 的个人资料。不知道为什么有必要,因为我的应用程序的发行配置文件已经显示在列表中了。以下是步骤:

  1. Xcode 首选项
  2. 帐户标签
  3. 选择你的苹果 ID
  4. 点击苹果 ID 详细信息面板中的查看详细信息按钮
  5. 点击左下角的刷新按钮

如果有人使用游戏中心,然后检查这一部分在您的目标。我曾经做过一些旧的项目,有2个错误(但是一切都工作正常)。禁用并重新启用它解决了这个问题。enter image description here

最有可能的是,此操作将游戏中心权限添加到应用程序 ID,并自己处理它。

我已经在这个问题上纠结了一天多了,尝试了这里和互联网上其他地方提出的各种解决方案。什么都没用。

但是,我终于设法解决了这个问题!

我遇到的问题是一个旧的应用程序,我已经超过3年没有触及,现在我要发布一个期待已久的更新。自从我发布这个应用程序以来,苹果一直在更新证书和应用程序 ID 的工作方式。他们引入了 Team Id 的概念,似乎建议使用。 特别是,苹果的“证书,标识符和配置文件”网站,已经看到了自那时以来的很多变化。

在那里,我意识到我用于应用商店分布的供应配置文件是连接到应用程序 ID ED8xxxxxxx.com.rostsolutions.*的,但是看看我即将提交的游戏的应用程序 ID,我注意到应用程序 ID 是 ATMxxxxxxx.com.rostsolutions.Swisch。所以 AppId 前缀不匹配! 这似乎是问题的根源。因此,我所做的是创建一个新的供应配置文件连接到应用程序 ID ATMxxxxxxx.com.rostsolutions.Swisch代替。使用这个配置文件,我成功地把我的应用程序提交到应用程序商店,现在我只是保持我的手指交叉,其他一切工作在苹果的一边很好。

(我首先尝试将新的 Provisoning 配置文件连接到通配符 Id ATMxxxxxxx.com.rostsolutions.*,但这似乎不起作用)。

但令我困惑的是,当我在 iTunes 连接中查看旧应用程序并进入二进制详细信息时,它说应用程序 ID 是 ED8xxxxxxx.com.rostsolutions.Swisch。那么,为什么“证书,标识符和配置文件”页面列出的应用程序 ID 作为 ATMxxxxxxx.com.rostsolutions.Swisch

这个的网站上有一个很好的教程来解决这个问题。

它说,当您的项目捆绑标识符与您在 ITunes Connect 网站上输入的标识符不同时,可能会发生此问题。

我的问题解决了,把我的苹果 ID 从首选项-> 帐户中删除,然后再次添加回来。然后,所有我的供应配置文件显示在查看详细信息实用工具面板。我错误地选择了“ Mac 团队供应配置文件: *”,而没有选择项目的实际分发配置文件,以为它是一个通用的选择。配置文件必须特定于项目。哦,顺便说一下,确保您的供应配置文件具有正确的权利(例如,地图)。我设法在没有授权的情况下发布了一个带有 OSX 地图的应用程序,苹果批准了它——但是在生产版本中没有显示任何地图!

如果你像我一样,你认为你尝试 一切,存档你的项目超过十次,敲击键盘你的头,仍然得到这个错误。请帮你自己一个忙,简单的 重启 XCode,它为我工作。有时苹果... 我恨你。

在我的案例中,我在 Xcode 激活了与在 developer.apple.com 应用服务中相同的功能,这对我很有用

enter image description here

enter image description here

在我的情况下(对不起) ,我在-> 一般-> 标识中将“团队”切换为“无”

在另一种情况下,我需要将这个身份从“无”切换到管理身份和配置文件的开发人员帐户。

看起来,Xcode 有时会在代码签名方面造成很大的混乱。或者,我们这些凡人根本就不够聪明,不能理解它在做什么,当然。不要放弃,我们有时候都会经历一些代码签名的折磨!

我认为 xcode 5使用的是“发布”而不是您自己创建的“发布”。

如果上面所有的都不起作用(在我的情况下,经过几天的 运气不好尝试一切) ,我只有一个 Mac 应用程序。小心撤销!

1)手动撤销所有“ Mac 应用程序发行版”和“ Mac 安装程序发行版”
2)清理钥匙链中的相关证书和开放密钥(警告:导出后删除)
3)重启 Xcode 4)转到(在 Safari 中) Developer.apple.com -> 证书等。 5)在 Keychain-> 证书助理中创建 CericateSigningRequest.certSigningRequest
6)使用 * . certSigningRequest 手动创建“ Mac 应用程序分发”和“ Mac 安装程序分发”的 developer.apple.com
7)供应配置文件-> 分发-> 为 AppStore 创建/修复自定义供应(我特别将其命名为“ AppStore 的 Mac 供应配置文件”)
8) Xcode-> Settings-> Account-> Your Account-> Refresh 9) Xcode Clean-> Archive-> Validate

我一直在努力解决类似的问题(我正在为 Ad-Hoc 发行版进行构建)。自上次成功部署以来,唯一改变的是向配置文件中添加了两个设备。

在双重和三重检查所有构建设置,我重建了供给侧写(没有改变任何东西) ,重新下载,它工作得很好。

因此,请注意: 如果没有逻辑解释,你总是可以尝试良好的老 IT 巫术。

我还建议使用 IPhone 配置工具,尽管它的名字不同,但它对于检查计算机上的配置文件非常有用。

1. 转到项目文件夹,删除 * . 应享权利文件。 然后在 xcode 项目目标-> 构建设置-> 代码签名权利-删除值 3. 清洁 4. 跑

我也有同样的问题,但这里写的东西对我都不管用。然而,我找到了一个对我有用的简单方法。下面是如何做到这一点:

1)在项目和目标构建设置中,为所有供应配置文件选择“无”,并为所有代码签名标识选择“不要代码签名”。

2)现在,选择你的目标,然后开始构建设置。在“代码签名身份发布”设置中,选择“任何 iOS SDK”的“ iOS 分发”。然后,在供应配置文件发布设置中,为“任何 iOSSDK”选择您的分发配置文件。之后,您的代码签名身份发布设置应自动更改为“ iPhone 分发”。

3)将构建存档并验证。现在应该可以正常工作了。就是这样!

错误 ITMS-9000:”此包无效。提交到 App Store 的新应用程序和应用程序更新必须使用 XCode5.1.1或更高版本的公共(GM)版本和 iOS7SDK 构建。不要提交用 beta 软件构建的应用程序。

啊,这个光荣的错误。对我来说,每当我看到这个错误,我检查以下事情:

1.允许 XCode 一直访问您的配置文件信息 -如果 XCode 一直询问您什么时候启动,以便访问您的计算机的私有文件,以便它可以获得配置文件信息的选项,允许访问总是,而不是现在,或只是一次-设置为总是允许访问

2.如果你有任何旧的权利文件在你的项目周围游荡,把它们删除,如果你看到一个。删除它(或者至少删除对它的引用,如果你不确定是否准备彻底删除它) ,然后确保构建设置中“代码签名”部分下的“代码签名权利”行是空的

3.在线检查你的应用程序服务,并在 XCode 中将它们与你的服务进行匹配,这个应用程序 -进入苹果会员中心,检查你的应用程序的应用程序 ID,点击应用程序查看它的“应用程序服务”,看看你已经检查了什么,然后进入 XCode 并检查你的“能力”部分,以确保两者都有相同的苹果服务列表

4.在验证 之前,请确保为应用程序分配了一个有效的供应配置文件——在苹果会员中心仔细检查您的应用程序的供应配置文件,确保它没有过期,具有正确的包 ID 和分发的正确的应用程序 ID。下载并点击新的供应配置文件,以确保 XCode 拥有它,或者点击 XCode > Preferences > Account > 点击你的账户,然后点击底部的角落按钮,将所有配置文件同步到 XCode。您现在应该可以在“代码签名”部分中选择配置文件。一旦您拥有了正确的配置文件,那么您就可以将“代码签名身份”行设置为该配置文件的正确选项。

注意-如果做一个分发证书,它可以帮助设置所有的“代码签名身份”行到您用于分发的标识,包括调试行

5.如果所有其他方法都失败了——清理你的项目,重启 XCode,下次你打开你的项目并尝试验证的时候,一些苹果的魔法可能会很好的工作

如果多个开发人员使用相同的会员中心帐户。其中一个不能使用其他人创建的证书,因为他们使用的是使用自己的计算机创建的证书请求。

您需要使用您创建的证书(证书请求) 用你的电脑创建)。

另外,告诉他们发送给你的开发人员配置文件。不知道名字。使用在另一台计算机上创建的证书。

代码签名 Entitments 的发生是因为你的资源不包含 Entitments 文件在资源中,只要去构建设置和搜索代码签名 Entitments 删除条目的调试和发布,再次构建项目你会看到没有错误。干杯