Xcode 5:代码签名权利错误

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

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

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

errror的屏幕截图:

在这里输入图像说明

解决scheme在于Xcode 5中的新选项,它表示configuration文件。 只需将项目目标的供应configuration文件设置为正确的configuration文件即可使用。

在这里输入图像说明

如果你像我一样,而且你认为你已经尝试了一切 ,把你的项目存档十次以上,把你的头撞在键盘上仍然会出现这个错误。 请自己帮忙 ,简单地重新启动XCode ,它为我工作。 有时苹果…我恨你。

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

  1. Xcode首选项
  2. 帐户标签
  3. select您的Apple ID
  4. 点击Apple ID详细信息面板中的查看详细信息button
  5. 点击左下angular的刷新button

在我的情况下,我激活了Xcode在developer.apple.com的应用程序服务中的相同function。 这对我很有用

在这里输入图像说明

在这里输入图像说明

在我的情况(对不起)我在“>常规” – “身份”中将“Team”切换为“None”

在另一种情况下,我需要将此标识从“无”切换到pipe理标识和configuration文件的开发者帐户。

看来,Xcode有时候会随着代码签名而大打折扣。 或者,当然,我们凡人根本就不够聪明,无法理解它在做什么。 不要放弃,我们都经历了一些代码签署酷刑有时!

在我的情况下,我必须设置正确的发行configuration文件,然后必须重新启动Xcode。 重新启动之前,它具有相同的提供configuration文件,并不起作用。 所以,有时重启可以创造奇迹。 也许这有助于某人。

如果有人使用GameCenter,请在您的目标中查看此部分。 我曾与一些旧项目,有2个错误(但一切工作正常)。 禁用并启用它解决了这个问题。 在这里输入图像说明

这个动作很有可能会将Game Center权利添加到App ID中,并自行处理。

1.进入项目文件夹,删除* .entitlements文件。 2.然后在xcode项目目标中去哟 – >build立设置 – >代码签名授权 – 删除值3.清理4.运行

啊,这个光荣的错误。 对于我,每当我看到这个错误,我检查以下几点:

1.允许XCode始终访问configuration文件信息 – 如果XCode始终询问您何时启动它以访问计算机的私人文件,以便可以通过允许访问的选项获取configuration文件信息,而不是现在,或者只是一次 – 将其设置为始终允许访问

2.如果你有任何旧的权利文件踢你的项目摆脱他们和他们的任何迹象 – 如果你看到一个.entitlements文件在你的项目中删除它(或至less删除引用它,如果你不确定您准备好彻底删除它),然后确保“生成设置”中“代码签名”部分下的“代码签名授权”行是空的

3.在线查看您的应用服务,并将其与XCode中的服务进行匹配 – 转到Apple会员中心,查看您的应用程序的应用程序ID,点击应用程序以查看其“应用程序服务”,看看您已经检查,然后去XCode,并检查您的“function”部分,以确保两者具有相同的苹果服务列表

4.确保在validation之前为您的应用程序分配有效的configuration文件 – 在Apple会员中心中检查您的应用程序的configuration文件,确保其未过期,具有正确的App ID和正确的软件包ID和分发。 下载并单击新的configuration文件以确保XCode具有该文件,或者转至XCode>首选项>帐户>单击您的帐户和“查看详细信息”,然后单击底部的angularbutton将所有configuration文件同步到XCode。 您现在应该在“代码签名”部分中提供该configuration文件供select。 一旦拥有正确的configuration文件,您就可以将“代码签名标识”行设置为该configuration文件的正确选项。

注意 – 如果使用分发证书,可以帮助将所有“代码签名标识”行设置为用于分发的标识,包括debugging行

5.如果所有ELSE FAILS – 清理你的项目,重新启动XCode和一些苹果的魔术可能会工作正常,下次打开你的项目,并尝试validation

如果你正在构build一个旧的3.1.5项目,Xcode 5有一些bug,不幸的是,Benjamin的答案是不可能的,因为没有configuration文件可供select。 在经历了许多深刻的阅读Xcode项目文件后,我想出了适用于我的这个解决scheme:

  • 在Xcode 5中的“实用程序”窗格(右侧)中的“项目文档”下,将Xcode 3.1兼容为兼容Xcode 3.2。
  • input您的组织名称。
  • closures项目。
  • 打开你的项目文件,例如open -a TextEdit path/to/name.xcodeproj/project.pbxproj
    • 删除两个分配子句( isa=XCBuildConfiguration )。
    • 删除buildConfiguration中的两行(一个在PBXNativeTarget ,一个在PBXProject XCConfigurationLists

现在,您已经准备好重新打开,归档并提交到App Store – voilà! 它再次运作!

我觉得它的工作原理

我认为这是有效的,因为沿线的苹果决定放弃任何单独的分发configuration的需要,这是一件好事。 当我存档时,Xcode会自动对代码进行分配。 这就是应该首先实现的方式,苹果公司无法将自动迁移作为IDE的一部分,这只是一个耻辱。 相反,他们迫使我们的开发人员花费数十年来使这个东西工作。

我一直在为这个问题奋斗了一天多,试图在这里和互联网上的其他地方提出各种解决scheme。 没有工作…

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

我遇到的问题是三年前我没有碰过的一个旧应用程序,现在我正准备发布一个期待已久的更新。 自从我发布应用程序以来,Apple一直在更新证书和App ID的工作方式。 他们引入了似乎被推荐使用的团队ID的概念。 特别是,苹果的“证书,标识符和简介”网站,从那以后看到了很多变化。

在那里,我意识到我用于App Store Distribution的供应configuration文件已经连接到App Id ED8xxxxxxx.com.rostsolutions.*但是看着我要提交的游戏的App ID,我注意到App ID是ATMxxxxxxx.com.rostsolutions.Swisch 。 所以App ID前缀不匹配! 这似乎是问题的根源。 所以我做的是创build一个新的configuration文件连接到应用程序ID ATMxxxxxxx.com.rostsolutions.Swisch代替。 使用该configuration文件,我成功地将我的应用程序提交给App Store,现在我只要保持手指交叉,就可以在苹果方面正常工作。

(我第一次尝试连接到新的configuration文件的通配符ID ATMxxxxxxx.com.rostsolutions.*而是,但似乎没有工作)。

但令我感到困惑的是,当我在iTunes Connects中查看旧应用程序并转到二进制详细信息时,它显示应用程序ID是ED8xxxxxxx.com.rostsolutions.Swisch 。 那么为什么“证书,标识符和configuration文件”页面列出的应用程序ID为ATMxxxxxxx.com.rostsolutions.Swisch

我的问题是通过删除我的Apple ID从首选项 – >帐户,然后再次添加回来解决。 然后,我的所有configuration文件文件都显示在“查看详细信息”工具面板上。 我错误地select了“Mac Team Provisioning Profile:*”而不是项目的实际分发configuration文件,认为这是一个通用的select。 configuration文件必须是特定于项目的。 哦,顺便说一下,确保您的configuration文件具有正确的权利(例如,地图)。 我设法发布了一个没有授权的OSX Maps的应用程序,苹果公司也批准了它 – 但没有地图出现在生产版本上!

在我的情况下,我有同样的问题,我的解决scheme是在存档之前更改生成设置中的“发布configuration文件”。 我做了两次,一次用于App Store发行版,另一次用于Ad Hoc发行版。 我还在我的档案中添加评论。 我的结论是,有关“档案重新签名”的内容有些破裂。

有一个非常好的教程解决这个问题在这个网站上。

它说,当您的项目包标识符与您在iTunes Connect网站上input的内容不同时,可能会发生此问题。

我认为xcode 5使用“发布”,而不是你自己创build的“发布”。

如果以上都没有工作(在我的情况下,几天后, 没有运气尝试一切)我只有一个Mac应用程序。 请注意倒转!

1)手工撤销所有“Mac App Distribution”和“Mac Installer Distribution”
2)清除钥匙串中的相关证书和开放密钥( 警告:删除前导出)
3)重新启动Xcode 4)进入(在Safari中) developer.apple.com – >证书等 。5)在Keychain中创buildCertificateSigningRequest.certSigningRequest-> Certificate assistant
6)在developer.apple.com上手动创build“Mac App Distribution”和“Mac Installer Distribution”以及* .certSigningRequest
7)Provisioning Profiles – > Distribution – >为AppStore创build/修改自定义设置(我特别命名为“AppStore的Mac设置configuration文件”
8)Xcode – >设置 – >帐户 – >您的帐户 – >刷新9)Xcode清洁 – >存档 – >validation

我一直在类似的问题挣扎(我正在为Ad-Hoc分配build设)。 只有自上次成功部署以来发生了变化,是将两台设备添加到configuration文件。

在检查所有构build设置之后, 我重新生成了configuration文件 (不需要更改任何内容),重新下载并且工作正常。

所以要注意自己:如果没有逻辑的解释,你总是可以尝试好老的IT巫术。

我也推荐iPhoneconfiguration实用程序 ,尽pipe它的名字,它是用来检查你在计算机上的configuration文件。

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

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

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

另外,告诉他们发送给你的开发者简介。 不知道名字。 使用另一台计算机上创build的证书。

代码签名授权发生的原因是您的资源不包含资源中的授权文件,只要去build立设置和search代码签名授权删除条目进行debugging和发布,再次build立项目,你会看到没有错误。 干杯

我有同样的问题,但没有写在这里为我工作。 但是,我发现了一个简单的方法,为我工作。 以下是如何做到这一点:

1)在您的项目和您的目标build立设置中,为所有供应configuration文件select“无”,并为所有的代码签名标识select“不要代码签名”。

2)现在,select你的目标,并去build立设置。 在代码签名身份发布设置中,为“任何iOS SDK”select“iOS发行版”。 然后,在Provisioning Profile Release设置中,为“Any iOS SDK”select您的分发configuration文件。 之后,您的代码签名身份发布设置应自动更改为“iPhone发行”。

3)存档你的构build和validation。 现在应该可以正常工作了。 而已!