Xcode 5:代码签名权利错误

时间:2013-09-15 23:05:57

标签: objective-c xcode macos code-signing xcode5

我已经构建了一个新的应用程序,它将支持IOS 7.我得到了新的XCode 5 GM并尝试使用我的新配置文件和分发证书签署我的应用程序,但我遇到了分发问题。我不断收到以下错误:

  

“无效的代码签名权利。您的应用中的权利   包签名与包含的包签名不匹配   供应资料。根据配置文件,   bundle包含一个不允许的键值:   '[XXXX.com.sample.company]'用于键'keychain-access-groups'。

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

错误的屏幕截图:

enter image description here

21 个答案:

答案 0 :(得分:208)

解决方案在于Xcode 5中的新选项,即配置配置文件。只需将项目目标的配置文件设置为正确的配置文件即可。

enter image description here

答案 1 :(得分:53)

如果你像我一样,并且你认为你曾尝试过一切,那么将你的项目存档十次,将你的头撞在键盘上仍然会出现此错误。请帮个忙,只需重启XCode ,它对我有用。有时苹果......我讨厌你。

答案 2 :(得分:25)

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

  1. Xcode偏好设置
  2. 帐户标签
  3. 选择您的Apple ID
  4. 点击Apple ID详细信息面板中的查看详细信息按钮
  5. 点击左下角的“刷新”按钮

答案 3 :(得分:12)

就我而言,我在Xcode中激活了与developer.apple.com中的应用程序服务相同的功能。那对我有用

enter image description here

enter image description here

答案 4 :(得分:6)

在我的情况下(抱歉)我在 - >中将“团队”切换为“无”一般 - >身份

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

似乎Xcode有时会因代码签名而大打折扣。或者,我们凡人只是不够聪明,无法理解它在做什么,当然。不要放弃,我们有时会经历一些代码签名折磨!

答案 5 :(得分:5)

在我的情况下,我必须为Release设置正确的Provision Profile,然后不得不重新启动Xcode。在重新启动之前,它具有相同的配置文件,但不起作用。所以,有时重启可以创造奇迹。也许这有助于某人。

答案 6 :(得分:3)

如果有人使用GameCenter,请检查目标中的此部分。我曾经使用过一些旧项目并且有2个错误(但一切正常)。禁用和启用它可以解决此问题。enter image description here

此操作最有可能将Game Center授权添加到App ID并自行处理。

答案 7 :(得分:3)

啊,这个光荣的错误。每当我看到这个错误时,我都会检查以下内容:

<强> 1。允许XCode始终访问您的配置文件信息 - 如果XCode一直询问您何时启动它以访问您计算机的私有文件,以便它可以获取配置文件信息以及允许的选项访问总是,不是现在,或只是一次 - 将其设置为始终允许访问

<强> 2。如果你有任何旧的权利文件踢你的项目摆脱它们和它们的任何迹象 - 如果你在项目中看到.entitlements文件删除它(或至少删除对它的引用,如果你不是&# 39;确保您已准备好彻底删除它),然后确保“#39;代码签名权利”&#39;代码签名&#39; “构建设置”中的部分为空

第3。在线检查您的应用服务并将其与XCode中的应用程序进行匹配 - 转到Apple会员中心并查看应用程序的应用程序ID,单击应用程序以查看其应用程序服务& #39;并查看您检查的内容,然后转到XCode并检查您的功能&#39;确保两者在两者上都有相同的Apple服务列表的部分

<强> 4。确保在验证前为您的应用分配有效的配置文件 - 在Apple会员中心仔细检查您的应用的配置文件,确保它没有过期,具有正确的App ID和正确的捆绑ID和分发。下载并单击新的配置文件以确保XCode具有它,或转到XCode&gt;偏好&gt;帐户&gt;点击您的帐户并查看详情&#39;然后单击底部角落按钮将所有配置文件同步到XCode。您应该可以在“代码签名”中选择配置文件。部分。拥有正确的配置文件后,您就可以设置“代码签名身份”&#39;行到该配置文件的正确选项。

注意 - 如果使用分发证书,它可以帮助设置所有“代码签名身份”&#39;用于分发的标识的行,包括调试行

<强> 5。如果所有失败 - 清理您的项目并重新启动XCode,一些Apple魔法可能会在您下次打开项目时尝试正常并尝试验证

答案 8 :(得分:3)

1.转到项目文件夹,删除* .entitlements文件。 然后去xcode项目目标 - &gt;构建设置 - &gt;代码签名权利 - 删除值 3.Clean 4.Run

答案 9 :(得分:2)

如果你正在构建一个旧的3.1.5项目,Xcode 5有一些错误,不幸的是,本杰明的回答是不可能的,因为没有可供选择的供应配置文件。经过多次对Xcode项目文件的折磨阅读后,我提出了这个对我有用的解决方案:

  • 在Xcode 5的Utilities窗格(右侧)中,在项目Document下,从Xcode 3.1兼容更改为Xcode 3.2兼容。
  • 输入您的组织名称。
  • 关闭项目。
  • 打开您的项目文件,例如open -a TextEdit path/to/name.xcodeproj/project.pbxproj
    • 删除两个分配条款(isa=XCBuildConfiguration)。
    • 删除buildConfiguration中的两个附带行(PBXNativeTarget中的一行和PBXProject XCConfigurationLists中的一行)

现在您已准备好重新打开,存档并提交到App商店 - 瞧!它又有效了!

我认为它如何运作

我认为这是有效的,因为苹果公司的某个地方决定放弃对任何单独的分发配置的需求,这是一件好事。当我存档时,Xcode自动编码分发标志。这应该是首先应该实现的方式,苹果不能将自动迁移作为IDE的一部分,这简直是一种耻辱;相反,它们迫使开发人员花费数十年的时间来使这些东西发挥作用。

答案 10 :(得分:2)

我一直在努力解决这个问题超过一天,尝试在互联网上和其他地方建议的各种解决方案。什么都没有用......

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

我遇到的问题是我用了3年未触及的旧应用程序,现在我即将发布期待已久的更新。自从我发布应用程序以来,Apple一直在更新证书和App Id的工作方式。他们引入了似乎建议使用的团队ID的概念。 特别是,Apple的“证书,标识符和配置文件”网站自那时以来已经发生了很多变化。

在那里,我意识到我用于App Store Distribution的配置文件已连接到App Id ED8xxxxxxx.com.rostsolutions.*,但查看我即将提交的游戏的应用ID,我注意到应用ID是{ {1}}。所以App Id前缀不匹配! 这似乎是问题的根源。所以我所做的是创建一个连接到App Id ATMxxxxxxx.com.rostsolutions.Swisch的新配置文件。使用该配置文件我成功将我的应用程序提交到App Store,现在我只是保持双手交叉,其他一切在Apple方面都运行正常。

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

但让我感到困惑的是,当我查看iTunes Connects中的旧应用程序并转到二进制详细信息时,它表示App ID为ATMxxxxxxx.com.rostsolutions.*。那么为什么“证书,标识符和个人资料”页面将应用ID标识为ED8xxxxxxx.com.rostsolutions.Swisch

答案 11 :(得分:2)

我的问题是通过从Preferences-&gt;帐户中删除Apple ID然后再将其添加回来解决的。然后,我的所有配置文件都显示在“查看详细信息”实用程序面板上。我错误地选择了“Mac Team Provisioning Profile:*”而不是项目的实际分配配置文件,认为它是一般选择。供应文件必须特定于项目。哦,顺便说一句,确保您的配置文件具有正确的权利(例如,地图)。我设法在没有授权的情况下发布了OSX Maps的应用程序,并且Apple批准了它 - 但是没有地图出现在生产版本上!

答案 12 :(得分:1)

在我的情况下,我遇到了同样的问题,我的解决方案是在进行存档之前更改构建设置中的“发布配置文件”。我这样做了两次,一次用于App Store分发,另一次用于Ad Hoc分发。我还在我的档案中添加评论。我的结论是,“存档重新签名”存在一些问题。

答案 13 :(得分:1)

错误ITMS-9000:“此捆绑包无效。提交到App Store的新应用和应用更新必须使用XCode 5.1.1或更高版本的公共(GM)版本和iOS 7 SDK构建。不要提交使用测试版软件构建的应用程序。

答案 14 :(得分:1)

我一直在努力解决类似的问题(我正在建立Ad-Hoc发行版)。只有自上次成功部署以来发生了变化,才将两台设备添加到配置文件中。

在对所有构建设置进行双重和三重检查后,我重新生成配置文件(不更改任何内容),重新下载并且工作正常。

所以请注意自己:如果没有逻辑解释,你可以随时尝试旧的IT伏都教。

我还建议使用iPhone Configuration Utility,尽管它的名称,但它可用于检查您在计算机上拥有的配置文件。

答案 15 :(得分:1)

如果以上所有内容都不起作用(在我的情况下经过几天没有运气尝试所有内容)我只有一个Mac应用程序。 请小心戒烟!

1)手动撤销所有&#34; Mac App Distribution&#34; &安培; &#34; Mac安装程序分发&#34;
2)清除钥匙串中的相关证书和开放密钥(警告:导出删除前) 3)重启Xcode 4)转到(在Safari中)developer.apple.com -> certificates etc. 5)在Keychain-&gt;证书助理中创建CertificateSigningRequest.certSigningRequest 6)在developer.apple.com上手动创建&#34; Mac App Distribution&#34; &安培; &#34; Mac安装程序分发&#34;与您的* .certSigningRequest
7)供应配置文件 - &gt;分发 - &gt;为AppStore创建/修复自定义配置(我特意将其命名为&#34; AppStore的Mac配置文件&#34;
8)Xcode - &gt;设置 - &gt;帐户 - &gt;您的帐户 - &gt;刷新 9)Xcode Clean - &gt;档案 - &gt;验证

答案 16 :(得分:1)

我认为xcode 5使用&#34; release&#34;而不是&#34;分发&#34;你可以自己创造。

答案 17 :(得分:1)

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

它表示当您的项目包标识符与您在iTunes Connect Website上输入的项目包标识符不同时,可能会出现此问题。

答案 18 :(得分:0)

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

  

您需要使用由您创建的证书(证书申请   使用您的计算机创建的。)

替代方案,告诉他们向您发送开发者档案。不确定的名字。使用在另一台计算机上创建的证书。

答案 19 :(得分:0)

代码签名由于您的资源不包含资源中的Entitlements文件而发生权利,只需去构建设置和搜索代码签名权限删除条目进行调试和发布,再次构建项目您将看到没有错误。干杯

答案 20 :(得分:-1)

我遇到了同样的问题,但这里写的任何内容都不适用于我。但是,我发现了一种对我有用的简单方法。这是如何做到的:

1)在您的项目和Target(s)构建设置中,为所有Provisioning配置文件选择“None”,并为所有代码签名标识选择“Do not Code Sign”。

2)现在,选择目标并转到构建设置。在“代码签名身份发布”设置中,为“任何iOS SDK”选择“iOS分发”。然后,在Provisioning Profile Release设置中,选择“Any iOS SDK”的分发配置文件。之后,您的代码签名身份发布设置应自动更改为“iPhone发布”。

3)归档您的构建并验证。现在它应该工作正常。就是这样!