【问题标题】:Xcode 5: Code signing entitlement errorsXcode 5:代码签名权利错误
【发布时间】:2013-09-20 00:49:11
【问题描述】:

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

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

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

错误截图:

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 添加到这个答案——我有用于配置文件的分发和发布类型。我遇到了同样的错误,这是因为我为 Release 类型设置了开发配置文件(我以为我使用的是 Distribution 类型并且没有注意到 Release 类型)。一旦我将它设置为我的发行版配置文件,它就可以工作了。
    • 为了进一步澄清这个答案,我一直在尝试使用组合视图在每个的顶层行设置我的配置文件和代码签名身份。这样做仍然会将其恢复为 。然而,当我展开这两行时,我看到每个配置的“任何 iOS SDK”子行都设置为 None,尽管 Debug/Release 行确实列出了正确的配置文件/签名身份。在这种状态下存档仍然给我错误,直到我明确地将所有“任何 iOS SDK”行设置为正确的值。
    • 我们在这个上花了 !不好的是,在构建 IPA 时,我们仍然必须再次选择相同的配置文件。本杰明,你是怎么知道这件事的?
    • 不幸的是,它对我不起作用。我在 developer.apple.com 网站上查看了我的个人资料,并启用了 Game Center 和应用内购买。我两个都不用,不知道这会不会是个问题。
    • 要进一步说明,请注意 Xcode 允许您为 projecttarget 选择 Provisioning 配置文件信息。您需要确保更改目标的设置,而不仅仅是项目。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        如果您正在构建一个旧的 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 中的一行)

        现在您已准备好重新打开、存档并提交到 App Store - 瞧!它再次起作用了!

        我认为它是如何工作的

        我认为这是可行的,因为 Apple 在某个地方决定放弃对任何单独的分发配置的需求,这是一件好事。当我归档时,Xcode 会自动对符号进行编码以进行分发。这就是它应该首先实现的方式,Apple 不能让自动迁移成为 IDE 的一部分,这只是一种耻辱;相反,他们迫使我们开发人员花费数十年的时间来使这些东西发挥作用。

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

          • 执行此操作后,您还应该重新运行构建和存档命令以确保应用新配置文件。 (至少,这对我来说是必要的。)
          【解决方案6】:

          如果有人使用 GameCenter,请在您的目标中检查此部分。我处理了一些旧项目,但出现了 2 个错误(但一切正常)。禁用并重新启用它解决了这个问题。

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

          【讨论】:

            【解决方案7】:

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

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

            我遇到的问题是一个我 3 年多没有接触过的旧应用程序,现在我即将发布一个期待已久的更新。自从我发布该应用程序以来,Apple 一直在更新证书和 App 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

            【讨论】:

            • 感谢张贴此丹尼尔。我看到类似的行为阻止使用所需的证书和配置文件。每次我下载证书或允许 Xcode 执行此操作时,都会出现一个“幻像”团队 ID,在我的情况下“破坏”iCloud 功能(使用)。我还没有解决方案。
            • 天啊!超过 50 个应用程序也在发生同样的问题!呃,幻影小队正在杀了我们。为什么苹果为什么!????
            【解决方案8】:

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

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

            【讨论】:

              【解决方案9】:

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

              【讨论】:

                【解决方案10】:

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

                【讨论】:

                • 我确实在一个 xcode 会话中构建了两个不同的应用程序并得到了 1000 个错误。重新启动工作。谢谢!
                • 这对我也有用。我正在使用 Xcode 6.3。我无法选择苹果开发帐户进行代码签名。每次“ios app id 'xxxxxxxxx' 不支持更改地图功能”时都会显示完全不相关的错误消息。一个简单的 xcode 重启为我修复了它。
                • 如果我可以为你投票 1000 次,我会的。这对我有用。这发生在 XCode 7.1 上。
                【解决方案11】:

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

                【讨论】:

                • 这对我有用——无法在开发者中心关闭它们,而且似乎 iOS 7.0 与 Xcode 5.1.1 一起编译需要它们开启。
                【解决方案12】:

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

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

                Xcode 似乎有时会在代码签名方面搞得一团糟。或者,当然,我们这些凡人根本不够聪明,无法理解它在做什么。不要放弃,我们有时都会经历一些代码签名的折磨!

                【讨论】:

                • 哇,你拯救了我的夜晚,谢谢。但是......为什么它起作用了?
                • 为什么会奏效……我认为 Xcode 是一个极其复杂的产品,身份和配置分析的东西从一开始就很麻烦。我想没有人对相互关系有充分的了解了。我不。有时它是反复试验,正如这个线程所示。
                【解决方案13】:

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

                【讨论】:

                  【解决方案14】:

                  如果以上所有方法都不起作用(在我的情况下,几天后运气不佳尝试了所有方法)我只有一个 Mac 应用程序。 小心撤销!

                  1) 手动撤销所有“Mac App Distribution”和“Mac Installer Distribution”
                  2) 清除 Keychain 中的相关证书和开放密钥(警告: 删除前导出)
                  3)重启Xcode 4) 转到(在 Safari 中)developer.apple.com -> certificates etc. 5) 在 Keychain->Certificate assistant
                  中创建 CertificateSigningRequest.certSigningRequest 6) 在 developer.apple.com 上使用您的 *.certSigningRequest
                  手动创建“Mac App Distribution”和“Mac Installer Distribution” 7) 配置文件 -> 分发 -> 为 AppStore 创建/修复自定义配置(我专门将其命名为“AppStore 的 Mac 配置文件”
                  8) Xcode -> 设置 -> 帐户 -> 你的帐户 -> 刷新 9) Xcode 清理 -> 存档 -> 验证

                  【讨论】:

                    【解决方案15】:

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

                    在对所有构建设置进行了两次和三次检查后,我重新生成了配置文件(没有更改任何内容),重新下载并运行良好。

                    所以请注意:如果没有逻辑解释,您可以随时尝试好的旧 IT 巫术。

                    我还推荐iPhone Configuration Utility,尽管它的名字,它对于检查您在计算机上的配置文件很有用。

                    【讨论】:

                      【解决方案16】:

                      1.进入项目文件夹,删除*.entitlements文件。 2.然后进入xcode项目目标->构建设置->代码签名权利-删除值 3.清洁 4.运行

                      【讨论】:

                        【解决方案17】:

                        我遇到了同样的问题,但这里写的东西对我没有用。但是,我找到了一种对我有用的简单方法。操作方法如下:

                        1) 在您的项目和目标构建设置中,为所有 Provisioning Profiles 选择“None”,并为所有 Code Signing Identities 选择“Don't Code Sign”。

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

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

                        【讨论】:

                          【解决方案18】:

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

                          【讨论】:

                            【解决方案19】:

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

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

                            2。如果您的项目中有任何旧的权利文件,请摆脱它们以及它们的任何迹象 - 如果您在项目中看到 .entitlements 文件,请将其删除(或者至少删除对它的引用,如果您不是) t 确定您已准备好彻底删除它),然后确保“构建设置”中“代码签名”部分下的“代码签名权利”行为空

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

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

                            注意 - 如果制作分发证书,它可以帮助将所有“代码签名身份”行设置为您用于分发的身份,包括调试行

                            5.如果所有其他方法都失败 - 清理您的项目并重新启动 XCode 和一些 Apple 魔法可能会在您下次打开项目并尝试验证时正常工作

                            【讨论】:

                              【解决方案20】:

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

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

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

                              【讨论】:

                                【解决方案21】:

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

                                【讨论】:

                                  猜你喜欢
                                  • 1970-01-01
                                  • 2014-03-02
                                  • 1970-01-01
                                  • 2017-01-20
                                  • 2018-02-23
                                  • 2013-10-18
                                  • 2014-06-26
                                  • 2010-11-25
                                  相关资源
                                  最近更新 更多