我已经构建了一个将支持 IOS 7 的新应用程序。我获得了新的 XCode 5 GM 并尝试使用我的新配置文件和分发证书签署我的应用程序,但我在分发时遇到了问题。我经常收到以下错误:
“无效的代码签名权利。您的应用程序包签名中的权利与配置文件中包含的权利不匹配。根据配置文件,捆绑包包含一个不允许的键值:'[XXXX.com.sample .company ]' 用于键“keychain-access-groups”。
对于名为 application-identifier
的键值也存在相同的错误。
错误截图:
https://i.stack.imgur.com/wrSZf.png
解决方案在于 Xcode 5 中的新选项,即配置文件。只需将项目目标的配置文件设置为正确的,它就会工作。
https://i.stack.imgur.com/2Hm5T.png
如果您像我一样,并且认为您尝试了所有方法,将项目存档了十多次,将头撞在键盘上,仍然会出现此错误。请帮自己一个忙,只需重新启动 XCode,它对我有用。有时苹果...我恨你。
我经历了上述许多步骤,但最终对我有用的是在 Xcode 中刷新我的个人资料。不知道为什么有必要,因为我的应用程序的分发配置文件已经显示在列表中。以下是步骤:
Xcode Preferences Accounts tab 选择您的 Apple ID 点击 Apple ID 详细信息面板中的查看详细信息按钮 点击左下角的刷新按钮
就我而言,我在 Xcode 中激活了与 developer.apple.com 的应用程序服务中相同的功能。那对我有用
https://i.stack.imgur.com/7j2CV.png
https://i.stack.imgur.com/TPhSU.png
就我而言(抱歉)我在 -> General -> Identity 中将“Team”切换为“None”
在另一种情况下,我需要将此身份从“无”切换到管理身份和配置文件的开发人员帐户。
看起来,Xcode 有时会在代码签名方面搞得一团糟。或者,当然,我们这些凡人根本不够聪明,无法理解它在做什么。不要放弃,我们有时都会经历一些代码签名的折磨!
就我而言,我必须为 Release 设置正确的 Provision Profile,然后必须重新启动 Xcode。在重新启动之前,它具有相同的配置文件,并且没有工作。所以,有时重启可以创造奇迹。也许这对某人有帮助。
https://i.stack.imgur.com/8J0ww.png
此操作很可能会将 Game Center 权利添加到 App ID 并自行处理。
1.进入项目文件夹,删除*.entitlements文件。 2.然后进入 xcode 项目目标 -> 构建设置 -> 代码签名权利 - 删除值 3.Clean 4.Run
啊,这个光荣的错误。对我来说,每当我看到此错误时,我都会检查以下内容:
1. 允许 XCode 始终访问您的配置文件信息 - 如果 XCode 一直询问您何时启动它以访问您计算机的私人文件,以便它可以获取配置文件信息,并允许始终访问,而不是现在,或仅一次 - 将其设置为始终允许访问
2. 如果您的项目中有任何旧的权利文件,请摆脱它们和任何迹象 - 如果您在项目中看到 .entitlements 文件,请将其删除(或者如果您不确定,至少删除对它的引用您已准备好彻底删除它),然后确保“构建设置”中“代码签名”部分下的“代码签名权利”行为空
3. 在线检查您的应用程序服务并将它们与应用程序的 XCode 中的服务匹配 - 转到 Apple 会员中心并检查您的应用程序的应用程序 ID,单击应用程序以查看其“应用程序服务”并查看您的应用程序已检查,然后转到 XCode 并检查您的“功能”部分,以确保两者在两者上都有相同的 Apple 服务列表
4. 确保在验证之前为您的应用分配有效的配置文件 - 在 Apple 会员中心仔细检查您的应用程序的配置文件,确保它没有过期,具有正确的应用程序 ID 和正确的包 ID 和分发.下载并单击新的配置文件以确保 XCode 具有它,或者转到 XCode > 首选项 > 帐户 > 单击您的帐户并“查看详细信息”,然后单击底角按钮将所有配置文件同步到 XCode。您现在应该可以在“代码签名”部分中选择配置文件。拥有正确的配置文件后,您可以将“代码签名身份”行设置为该配置文件的正确选项。
注意 - 如果进行分发证书,它可以帮助将所有“代码签名身份”行设置为您用于分发的身份,包括调试行
5. IF ALL ELSE FAILS - 清理你的项目并重新启动 XCode 和一些 Apple 魔法可能会在你下次打开项目并尝试验证时正常工作
如果您正在构建一个旧的 3.1.5 项目,那么 Xcode 5 有一些错误,不幸的是,这些错误使 Benjamin 的答案变得不可能,因为没有可供选择的 Provisioning 配置文件。在对 Xcode 项目文件进行了数小时的痛苦阅读之后,我想出了这个对我有用的解决方案:
在 Xcode 5 的 Utilities 窗格(右侧)中,在项目 Document 下,从 Xcode 3.1-compatible 更改为 Xcode 3.2 compatible。
输入您的组织名称。
关闭项目。
打开您的项目文件,例如 open -a TextEdit path/to/name.xcodeproj/project.pbxproj 删除两个 Distribution 子句 (isa=XCBuildConfiguration)。删除 buildConfiguration 中的两行(一行在 PBXNativeTarget 中,另一行在 PBXProject XCConfigurationLists 中)
删除两个 Distribution 子句 (isa=XCBuildConfiguration)。
删除 buildConfiguration 中的两行(一行在 PBXNativeTarget 中,另一行在 PBXProject XCConfigurationLists 中)
现在您已准备好重新打开、存档并提交到 App Store - 瞧!它再次起作用!
我认为它是如何工作的
我认为这是可行的,因为苹果公司决定放弃对任何单独的分发配置的需求,这是一件好事。当我归档时,Xcode 会自动对符号进行编码以进行分发。这就是它应该首先实现的方式,Apple 不能让自动迁移成为 IDE 的一部分,这只是一种耻辱;相反,他们迫使我们开发人员花费数十年的时间来使这些东西发挥作用。
我已经为这个问题苦苦挣扎了一天多,尝试了这里和互联网上其他地方建议的各种解决方案。没有任何效果...
但是,我终于设法解决了这个问题!
我遇到的问题是一个我 3 年多没有接触过的旧应用程序,现在我即将发布一个期待已久的更新。自从我发布应用程序以来,Apple 一直在更新证书和应用程序 ID 的工作方式。他们引入了似乎推荐使用的团队 ID 的概念。尤其是 Apple 的“证书、标识符和配置文件”网站,此后发生了很多变化。
在那里,我意识到我用于 App Store Distribution 的 Provisioning Profile 已连接到 App Id ED8xxxxxxx.com.rostsolutions.*
,但查看我将要提交的游戏的 App Id,我注意到 App Id 是 ATMxxxxxxx.com.rostsolutions.Swisch
。所以 App Id 前缀不匹配!这似乎是问题的根源。所以我所做的是创建一个连接到 App Id ATMxxxxxxx.com.rostsolutions.Swisch
的新配置文件。使用该配置文件,我成功地将我的应用程序提交到 App Store,现在我只是保持手指交叉,其他一切在 Apple 方面都可以正常工作。
(我首先尝试将新的配置文件连接到通配符 ID ATMxxxxxxx.com.rostsolutions.*
,但这似乎不起作用)。
但令我困惑的是,当我在 iTunes Connects 中查看旧 App 并转到 Binary Details 时,它显示 App Id 为 ED8xxxxxxx.com.rostsolutions.Swisch
。那么为什么“证书、标识符和配置文件”页面将 App Id 列为 ATMxxxxxxx.com.rostsolutions.Swisch
?
我的问题是通过从 Preferences->Accounts 中删除我的 Apple ID 然后重新添加来解决的。然后我的所有配置文件都显示在查看详细信息实用程序面板上。我错误地选择了“Mac Team Provisioning Profile:*”而不是项目的实际分发配置文件,认为这是一个通用选择。供应文件必须特定于项目。哦,顺便说一句,确保您的配置文件具有正确的权利(例如,地图)。我设法在没有授权的情况下发布了一个带有 OSX Maps 的应用程序,Apple 批准了它——但生产版本中没有地图出现!
就我而言,我遇到了同样的问题,我的解决方案是在执行存档之前更改构建设置中的“发布配置文件”。我这样做了两次,一次用于 App Store 分发,另一次用于 Ad Hoc 分发。我还对我的档案添加了评论。我的结论是“存档重新签名”有些问题。
我认为 xcode 5 使用“发布”而不是您自己创建的“分发”。
如果以上都不起作用(在我的情况下,几天后没有运气尝试一切)我只有一个 Mac 应用程序。小心撤销!
1)手动撤销所有“Mac App Distribution”& “Mac 安装程序分发”
2) 清除钥匙串中的相关证书和打开密钥(警告: 删除前导出)
3) 重新启动 Xcode 4) 转到(在 Safari 中){1 } 5) 在 Keychain->Certificate assistant
中创建 CertificateSigningRequest.certSigningRequest 6) 在 developer.apple.com 上手动创建“Mac App Distribution”和“Mac 安装程序分发”与您的 *.certSigningRequest
7) 配置文件 ->分布 ->为 AppStore 创建/修复自定义配置(我专门将其命名为“AppStore 的 Mac 配置文件”
8)Xcode ->设置->帐户->您的帐户 ->刷新 9) Xcode Clean ->存档 ->证实
我一直在努力解决类似的问题(我正在为 Ad-Hoc 分发构建)。自上次成功部署以来唯一发生的变化是将两个设备添加到配置文件中。
在对所有构建设置进行了两次和三次检查后,我重新生成了配置文件(没有更改任何内容),重新下载并且运行良好。
所以请注意:如果没有逻辑解释,您可以随时尝试好的旧 IT 巫术。
我还推荐 iPhone Configuration Utility,尽管它的名字,它对于检查您在计算机上的配置文件很有用。
错误 ITMS-9000:“此捆绑包无效。提交到 App Store 的新应用和应用更新必须使用公共 (GM) 版本的 XCode 5.1.1 或更高版本以及 iOS 7 SDK 构建。不要提交使用 beta 软件构建的应用程序。
如果多个开发者使用同一个会员中心账号。他们中的一个人不能使用其他人创建的证书,因为他们使用了使用他们的计算机创建的证书请求。
您需要使用您创建的证书(使用您的计算机创建的证书请求)。
或者,告诉他们向您发送开发者资料。不确定名字。使用在另一台计算机上创建的证书。
代码签名权利发生是因为您的资源在资源中不包含权利文件,只需转到构建设置并搜索代码签名权利删除条目以进行调试和发布,再次构建项目您将看到没有错误。干杯
我遇到了同样的问题,但这里写的没有任何东西对我有用。但是,我找到了一种对我有用的简单方法。这是如何做到的:
1) 在您的项目和目标构建设置中,为所有供应配置文件选择“无”,并为所有代码签名身份选择“不进行代码签名”。
2) 现在,选择您的目标并转到构建设置。在代码签名身份发布设置中,为“任何 iOS SDK”选择“iOS 分发”。然后,在 Provisioning Profile Release 设置中,为“Any iOS SDK”选择您的分发配置文件。之后,您的代码签名身份发布设置应自动更改为“iPhone 分发”。
3) 归档您的构建并验证。现在它应该可以正常工作了。而已!