Xcode 5:代码签名授权错误


149

我已经构建了一个将支持IOS 7的新应用程序。我获得了新的XCode 5 GM,并尝试使用新的配置文件和分发证书对我的应用程序进行签名,但是我在分发方面遇到了麻烦。我不断收到以下错误:

“无效的代码签名权利。您的应用程序包签名中的权利与配置文件中包含的权利不匹配。根据配置文件,该捆绑软件包含不允许的键值:'[XXXX.com.sample .company]”作为密钥“ keychain-access-groups”。

对于键值,也存在相同的错误application-identifier

错误屏幕截图:

在此处输入图片说明

Answers:


208

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

在此处输入图片说明


6
为了增加这个答案-我有配置类型的分发和发布类型。我遇到了同样的错误,这是因为我为Release类型设置了开发配置文件(我以为我正在使用Distribution类型,却没有注意到Release类型)。一旦将其设置为我的发行个人资料,便可以使用。
Bek 2013年

4
为了进一步阐明该答案,我一直在尝试使用组合视图在每个文件的顶层行设置我的配置文件和代码签名身份。这样做仍然会将其恢复为<Multiple values>。但是,当我同时扩展两行时,尽管“调试/发布”行确实列出了正确的配置文件/签名身份,但每个配置的“任何iOS SDK”子行都设置为“无”。在这种状态下进行归档仍然给我错误,直到我将所有“ Any iOS SDK”行明确设置为适当的值为止。
2013年

1
我们已经花了几天的时间!不好的事情是在构建IPA时,我们仍然必须再次选择相同的配置文件。本杰明,您是如何找到这个的?
cregox

2
不幸的是,它对我不起作用。我在developer.apple.com网站上检查了个人资料,并启用了Game Center和应用内购买功能。我都不用,也不知道这是否可能是个问题。
JScarry 2013年

4
为了进一步说明,请注意Xcode允许您为项目目标选择Provisioning配置文件信息。您需要确保更改的是目标设置,而不仅仅是项目。
Brian Stormont 2014年

55

如果您像我一样,并且认为自己尝试了一切,则将项目存档了十次,用力敲键盘,仍然出现此错误。请帮个忙,只需重启XCode,它对我有用。有时苹果...我恨你。


我确实在一个xcode会话中构建了两个不同的应用程序,但出现了1000个错误。重新启动工作。谢谢!
donmarkusi 2014年

这也对我有用。我正在使用Xcode 6.3。我无法选择Apple dev帐户进行代码签名。每次“ ios应用程序ID'xxxxxxxxx'不支持对地图功能的更改”时,都会显示完全不相关的错误消息。一个简单的xcode重新启动为我修复了它。
萨希尔

3
如果我能支持你一千次,我会的。这对我有用。这发生在XCode 7.1上。
Manu Kanthan 2015年

25

我经历了上面的许多步骤,但最终对我有用的是在Xcode中刷新我的配置文件。由于我的应用程序的分发配置文件已显示在列表中,因此不确定为什么需要这样做。步骤如下:

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

2
完成此操作后,还应该重新运行“构建和存档”命令,以确保应用了新的配置文件。(至少,这对我来说是必要的。)
布伦特·皇家·戈登

12

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

在此处输入图片说明

在此处输入图片说明


这就是我的工作-无法在开发人员中心将其关闭,似乎使用Xcode 5.1.1的iOS 7.0编译要求将它们打开。
Matt H

6

对于我的情况(对不起),我在->常规->身份中将“团队”切换为“无”

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

看起来,Xcode有时会严重干扰代码签名。或者,我们仅仅是凡人,根本不够聪明,无法理解它在做什么。不要放弃,有时我们都会经历一些代码签名折磨!


哇,您保存了我的夜晚,谢谢。但是...为什么起作用?
马丁

它为什么起作用……我认为Xcode是一个非常复杂的产品,从一开始,身份和配置分析的工作就很繁琐。我认为再也没有人对相互关系有充分的了解。我不。有时是反复试验,如该线程所示。
RickJansen 2014年

5

就我而言,我必须为发布设置正确的配置文件,然后必须重新启动Xcode。在重新启动之前,它具有相同的配置文件,并且无法正常工作。因此,有时重新启动可以创造奇迹。也许这对某人有帮助。


3

如果有人使用GameCenter,请在目标中检查此部分。我处理了一个旧项目,但有2个错误(但一切正常)。禁用并启用它可以解决此问题。在此处输入图片说明

此操作很可能会将Game Center权利添加到App ID中并自行处理。


3

1.转到项目文件夹,删除* .entitlements文件。2.然后在xcode项目目标中执行->构建设置->代码签名授权-删除值3.清除4.运行


3

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

1.允许XCode始终访问您的配置文件信息 -如果XCode一直在询问您何时启动它,就可以访问计算机的私有文件,以便它可以获取带有始终允许访问的选项的配置文件信息,而不是现在,或仅一次-将其设置为“始终允许访问”

2.如果您的项目中有任何旧的授权文件,请摆脱它们,并加以标记 -如果您在项目中看到.entitlements文件,请将其删除(如果不确定,请至少删除对该文件的引用)您可以直接删除它了),然后确保“构建设置”中“代码签名”部分下的“代码签名权利”行为空

3.在线检查您的应用程序服务,并将其与应用程序的XCode中的服务进行匹配 -转到Apple会员中心并检查您的应用程序的应用程序ID,单击该应用程序以查看其“应用程序服务”,然后查看您的应用程序已检查,然后转到XCode并检查“功能”部分,以确保两者在Apple的服务列表相同

4.确保在验证之前为应用程序分配了有效的配置文件 -在Apple会员中心中仔细检查您的应用程序的配置文件,确保它没有过期,具有正确的应用程序ID和正确的捆绑软件ID和分发。下载并单击新的配置文件以确保XCode拥有它,或转到XCode>首选项>帐户>单击您的帐户,然后单击“查看详细信息”,然后单击底角按钮将所有配置文件同步到XCode。您现在应该可以在“代码签名”部分中选择配置文件。一旦有了正确的配置文件,就可以将“代码签名身份”行设置为该配置文件的正确选项。

注意-如果进行分发证书,则可以将所有“代码签名身份”行设置为用于分发的身份(包括调试行)

5.如果所有其他失败-清理项目并重新启动XCode,则下次打开项目并尝试验证时,某些Apple Magic可能工作正常


2

如果您正在构建旧的3.1.5项目,则Xcode 5会存在一些错误,不幸的是,由于没有Provisioning配置文件可供选择,因此本杰明的答案无法实现。经过一个小时的痛苦的Xcode项目文件阅读之后,我想出了一个对我有用的解决方案:

  • 在Xcode 5的“实用工具”窗格(右侧)中,在“项目文档”下,从“兼容Xcode 3.1”更改为“兼容Xcode 3.2”。
  • 输入您的组织名称。
  • 关闭项目。
  • 打开您的项目文件,例如 open -a TextEdit path/to/name.xcodeproj/project.pbxproj
    • 删除两个分发子句(isa=XCBuildConfiguration)。
    • 删除buildConfiguration中的两条伴随行(一进PBXNativeTarget一出PBXProject XCConfigurationLists

现在,您可以重新打开,存档并提交到App Store了-voilà!它再次起作用!

我认为它如何运作

我认为这是可行的,因为苹果公司决定不再需要任何单独的分发配置,这是一件好事。当我存档时,Xcode会自动编码标志以进行分发。那就是应该首先实现它的方式,对于Apple无法使自动迁移成为IDE的一部分感到遗憾。相反,它们迫使我们的开发人员花了数十年的时间来使这些东西正常工作。


2

我已经为这个问题苦苦挣扎了一天多,尝试这里和互联网上其他地方建议的各种解决方案。没事...

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

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

在那儿,我意识到我用于App Store分发的Provisioning Profile已连接到App ID,ED8xxxxxxx.com.rostsolutions.*但是在查看我要提交的游戏的App ID时,我注意到App ID是ATMxxxxxxx.com.rostsolutions.Swisch。因此,App ID前缀不匹配!这似乎是问题的根源。因此,我要做的是改为创建一个连接到App ID的新Provisioning Profile ATMxxxxxxx.com.rostsolutions.Swisch。使用该Provisioning Profile,我成功地将我的应用程序提交到App Store,现在我可以保持手指交叉,其他一切都可以在Apple端正常进行。

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

但是令我困惑的是,当我查看iTunes Connects中的旧应用程序并转到Binary Details时,它说该应用程序ID为ED8xxxxxxx.com.rostsolutions.Swisch。那么,为什么“证书,标识符和配置文件”页面将应用程序ID列出为ATMxxxxxxx.com.rostsolutions.Swisch


感谢您发布此丹尼尔。我看到类似的行为,导致无法使用所需的证书和配置文件。每次我下载证书或允许Xcode进行认证时,都会出现一个“虚拟”团队ID,在我的情况下会“破坏” iCloud功能(使用)。我还没有解决方案。
David

我的天啊!超过50种应用对我们同样有用!幽灵队正在杀死我们。为什么苹果为什么!???
Sukima 2014年

2

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


1

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


1

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

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


1

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


1

如果以上所有方法都不起作用(对我而言,几天后就没有运气尝试一切),我只有一个Mac应用程序。谨防撤销!

1)手动撤消所有“ Mac App Distribution”和“ Mac Installer Distribution”
2)清理钥匙串中的相关证书和开放密钥(警告:删除前先导出)
3)重新启动Xcode 4)转到(在Safari中)developer.apple .com->证书等 。5)在钥匙串->证书助手中
创建CertificateSigningRequest.certSigningRequest 6)用* .certSigningRequest手动在developer.apple.com上创建“ Mac App Distribution”和“ Mac Installer Distribution”
7)设置配置文件->分发->创建/修复AppStore的自定义配置(我特别将其命名为“ AppStore的Mac配置配置文件”
8)Xcode->设置->帐户->您的帐户->刷新9)Xcode Clean-> Archive-> Validate


1

我一直在努力解决类似的问题(我正在为Ad-Hoc分发而构建)。自上次成功部署以来,唯一发生变化的就是将两个设备添加到配置文件中。

在仔细检查了所有构建设置之后,我重新生成了配置文件(不进行任何更改),重新下载并运行良好。

因此请注意:如果没有逻辑解释,您可以随时尝试使用老式的IT伏都教。

我还建议使用iPhone配置实用程序,尽管它的名称如此,它对于检查计算机上有哪些配置文件很有用。


1

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


0

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

您需要使用自己创建的证书(使用计算机创建的证书请求)。

或者,告诉他们向您发送开发人员资料。不确定名称。使用在另一台计算机上创建的证书。


0

因为您的资源中资源中不包含授权文件,所以发生代码签名授权,只需转到构建设置并搜索代码签名授权,就可以删除调试和发布条目,再次构建项目,您将看到没有错误。干杯


-1

我遇到了同样的问题,但是这里没有任何内容适合我。但是,我找到了一种对我有用的简单方法。方法如下:

1)在您的项目和目标构建设置中,为所有置备配置文件选择“无”,为所有代码签名标识选择“不进行代码签名”。

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

3)存档您的构建并验证。现在应该可以正常工作了。而已!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.