【问题标题】:Profile doesn't match the entitlements file's value for the application-identifier entitlement配置文件与应用程序标识符权利的权利文件的值不匹配
【发布时间】:2018-02-19 06:31:15
【问题描述】:

我正在尝试将应用上传到应用商店,但在包含证书的页面上出现此错误。据我所知,我已经更改了字段,因此它们匹配了,但我缺少一些东西。

任何帮助将不胜感激。

【问题讨论】:

  • 显示您的entitlements.plist 文件。
  • 也许是因为我以前从未寻找过它,但我看到的唯一 plist 说的是信息,但这是第二张图片。
  • 它说我不能再发布链接了,如果有人想出任何东西,我就要搭飞机去芝加哥了

标签: ios xcode code-signing entitlements xcarchive


【解决方案1】:

我不确定为什么会修复它,但我进入了我的 Target 的功能选项卡,打开了 iCloud,尝试进行归档构建,但失败了,我再次关闭了 iCloud,尝试进行归档构建并且它成功了,之后又能自动解析证书了。

【讨论】:

  • 我自己用 Xcode 9 遇到了这个问题,切换东西解决了它。该项目唯一的“不同”之处在于它是古老的。比如,2010年的古代。所以也许一些遗留项目文件正在发生......?
  • 感谢您 - 在打开/关闭开关后,它在 xcodeproj 旁边创建了一个空的 .entitlements plist。看起来这就是提交过程正在寻找的内容。对于不需要任何权利/功能的现有应用程序,可能只是 Xcode 9 中的一个问题。
  • 这里也一样。古老的项目。非常感谢切换功能的建议,现在有一个空的 .entitlements 被接受。向 Apple 提交错误。
  • 在这个 bs 上打了整个晚上。我必须打开和关闭,这会创建空白权利文件,然后我必须将我的“代码签名权利”构建设置指向该空白文件。
  • 在 Xcode 10.0beta5 中这种情况仍在发生。对我来说,这是由于在创建权利后更改了项目名称。打开然后关闭 iCloud 重命名了权利文件并在构建设置中更新了它的名称。该文件的内容是相同的。无论构建设置文件名如何,上传者似乎都关心权利文件的名称。
【解决方案2】:

右键单击 Finder -> 转到文件夹...

~/Library/MobileDevice/Provisioning

对于 Xcode 11

~/Library/MobileDevice/Provisioning Profiles/

删除所有配置文件,完成。

【讨论】:

  • 在我的例子中,文件夹是“~/Library/MobileDevice/Provisioning Profiles”
  • 同意,这是正确的答案,只是 Xcode 11 的路径是 ~/Library/MobileDevice/Provisioning Profiles/
  • 为什么这样可以解决问题?我们刚刚删除了什么?这有副作用吗?
  • 您正在删除由 Xcode 自动添加或通过从 developer.apple.com 打开配置文件手动添加的配置文件。如果您不想丢失其他配置文件,可以使用类似... grep -ir YOUR_APP_ID ~/Library/MobileDevice/Provisioning\ Profiles;显示哪些配置文件匹配。只需删除它们,它就会完成相同的任务。
  • 这修复了它,但您需要先转到 Xcode 并取消单击 Automatically Manage Signing,然后执行上述操作,然后重新检查 Auto Signing,一切都很好。为我修好了。在此处查看完整描述 :: ottorinobruni.com/…
【解决方案3】:

您创建的应用具有不正确的 application-identifier 值,与配置文件的预期值不符。团队2ABCDEFG 的appID com.example.foo 的证书将期待application-identifier: 2ABCDEFG.com.example.foo,您的应用声明其appID 为com.example.foo,但application-identifier 不匹配,或者您使用了错误的团队前缀,或者您的 bundleID 配置错误。

就我而言,我正在使用构建方案来构建产品应用程序和质量保证应用程序。 com.example.foo 用于生产,com.example.foo.qa 用于 QA。

我已将 Info.plist 中的 bundleIdentifier 设置为 $(PRODUCT_BUNDLE_IDENTIFIER)$(BUNDLE_SUFFIX),这在模拟器和设备上运行良好,可用于拥有不同的应用程序,但是,当应用程序在存档阶段生成其 application-identifer 时,它不能正在读取 Info.plist 生成的 bundleIdentifier。

为了纠正这种情况,我编辑了 FooProject.xcodeproj/project.pbxproj(使用文本编辑器)将我的 QA buildSettings PRODUCT_BUNDLE_IDENTIFIER 更改为 com.example.foo.qa

您可以查看Apple's Technical Q&Athis page,了解他们对解决此问题的深入研究。在导出的应用上运行以下命令后:

codesign -d --entitlements :- ./Payload/myApp.app

看看你的应用是用什么application-identifier构建的,应该很快就会意识到你做错了什么。

我在 Google 搜索中没有找到该页面,因为他们实际上并没有使用错误消息中的短语或通过其全名调用应用程序标识符,而是使用 App ID。

此外,此问题的解决方案不是生成具有application-identifier 权利的新配置文件,它确实具有该权利,但是,配置文件中的值必须与您的应用匹配。

【讨论】:

  • 谢谢!我可以通过在打包下更改构建设置来修复,以使用我的自定义 var 作为产品包标识符中的后缀。例如com.mycompany.myapp$(BUNDLE_ID_SUFFIX) 这解决了它。所以我不必手动编辑项目文件,并且能够轻松地为每个环境维护不同的包 ID。
  • 应用程序标识符不匹配的一个原因是您没有下载所有配置文件。如果缺少具有确切应用 ID 的配置文件,则使用通配符配置文件创建您的存档,这会导致导出阶段不匹配。
  • 这对我有用。我正在构建一个 Ionic 应用程序,并意识到我在另一个帐户上进行了测试。我使用 com.foo.testName 并在使用正确的帐户构建时将其改回。似乎 com.foo.testName 仍在 pbxproj 文件中
  • 非常感谢,这正是阻碍我验证的原因,而且解释很清楚!
  • @n8tr 在经历了将近一周的头痛和沮丧之后,您的评论救了我。谢谢。
【解决方案4】:

可能缺少 {project}.entitlements 文件。执行@samkass 提到的操作将自动生成文件并且它会起作用。 所以基本上只需转到功能选项卡,启用任何内容,然后禁用它。

【讨论】:

  • 这很愚蠢,但它适用于我正在更新的几个旧项目。
【解决方案5】:

将 iCloud 切换更改为打开、构建和禁用 iCloud,消除了以下错误:

配置文件与应用程序标识符和钥匙串访问组权利的权利文件值不匹配。

【讨论】:

  • 当然这就是解决方案!为什么我没有想到要尝试这种完全不明显的事情。谢谢苹果。
【解决方案6】:

在 Xcode 11 中,当您的项目不存在 .entitlement 文件时,可能会发生这种情况。解决方案是通过单击“Signing & Capabilities”下的“+ Capability”添加任何随机功能(这会导致创建 .entitlement 文件),然后删除该功能。这也可以让您自动配置证书。

【讨论】:

    【解决方案7】:

    请检查您的应用程序所需的应用程序功能,例如在应用程序购买、推送通知、Inter App 音频、Siri 工具包等。

    这是导致此类错误的唯一原因。

    确保在您的 App id 中,上述标志应处于打开状态。

    大多数情况下,您未配置推送通知,在您的开发应用 ID 中购买应用内购买。

    【讨论】:

    • 我没有启用任何东西。这真是令人沮丧。
    • 你的应用有我上面提到的任何功能吗
    • 稍后我会附上截图,但没有推送通知或应用内购买。
    • 您到底想要什么屏幕截图?在 plist 下它没有提到权利。
    【解决方案8】:

    我进入我的 Target 的 Capabilities 选项卡,打开 Keychain Sharing 并开始工作

    【讨论】:

      【解决方案9】:

      对我来说,诀窍是

      1. 为目标添加/删除一个功能(在我的例子中是一个小部件);
      2. 确保创建的权利文件列在构建设置中;
      3. 并将值为“development”的“APS Environemnt”键添加到授权文件中。

      【讨论】:

        【解决方案10】:

        我正在开发一个使用 --dart-define 命令的 Flutter 应用程序。 这个great article给了我很大的启发。

        但是,我在部署时遇到了这个“应用程序标识符”问题。 我已经尝试了很多选择。 This solution 是为我工作的那个。 它与@n8tr 的comment 非常接近,但区别在于“相反”。

        要恢复,只需在 Build Settings 中的 Packaging 而不是中将 Product Bundle Identifier 设置为 your.id.here$(DEFINEEXAMPLE_APP_SUFFIX),而不是在 Info.plist 中。

        【讨论】:

          【解决方案11】:

          在 Xcode 10 中,我通过将权利文件移动到 Project Navigator 中的正确文件夹来使其正常工作。我没有权利文件,但我设法通过切换功能选项卡上的功能来获得一个。

          【讨论】:

            【解决方案12】:

            我遇到了同样的错误,上面的解决方案都没有解决我的问题。

            对我有用的是将“Entitlements.plist”文件中的“可以调试”设置从“否”更改为“是”。

            【讨论】:

              【解决方案13】:

              在我的情况下,问题如下:用于构建步骤的配置文件是为不同的应用 ID 创建的,而不是用于导出步骤的配置文件。

              因此,请确保您在构建和导出步骤中使用相同的配置文件。

              【讨论】:

              • 因为我想强调由于构建和导出步骤中的配置文件不同,可能会发生此错误。在这种情况下,错误消息对查找根本原因没有帮助。至于为什么回答迟到了——这个错误并不局限于某个特定的时间段。所以它发生在 1 年前,现在同样发生。接受的答案在我的情况下不起作用。
              【解决方案14】:

              对我有用的是我在 XCode 11 中制作了存档,并在 Xcode 12 beta 中上传。

              【讨论】:

                【解决方案15】:

                应用中的交叉检查功能与您在开发者帐户中为应用 ID 启用的选项。

                【讨论】:

                • 这是一个免费的应用程序,我没有启用任何东西,这太令人沮丧了。它在我的设备上安装得很好,我只是不知道去哪里找。
                • 你能分享两者的截图吗?
                • 你想要什么截图?
                • 开发者帐户功能部分和 App Id 配置的屏幕截图
                【解决方案16】:

                我尝试了此处答案中列出的一些选项,但没有任何帮助,但是,关闭并打开“自动管理签名”复选框来解决问题。

                【讨论】:

                  【解决方案17】:

                  TL;DR:检查您的 App ID 并确保服务与您的目标中的内容相匹配。


                  发生在我身上的是我让 Xcode 10.1 帮助我创建了一个 App ID,然后我遇到了这里描述的问题。 (我在 iTunesConnect 中创建应用程序时选择了通配符应用程序 ID,所以我什至没有意识到这已经完成。)当我打开 iOS 开发者门户时,新的应用程序 ID 自动启用了游戏中心和应用内购买。

                  由于我无法在您的Target -> Capabilities 中启用游戏中心,因此我启用了应用内购买,然后我的应用就可以进行签名和上传了。

                  【讨论】:

                    【解决方案18】:

                    当我们遇到同样的问题时,我们尝试了上述所有方法,但都没有奏效。

                    对我们有用的是更改包标识符,使其与前一个不同,例如“com.name.App”到“com.name.App2”;让 xcode 尝试获取/创建配置文件,然后将其恢复为原始配置文件。

                    从 Apple 开发者论坛上的这个帖子中得到这个想法-https://forums.developer.apple.com/thread/114539

                    【讨论】:

                      【解决方案19】:

                      我最近在尝试创建重复目标后遇到了此页面 - 没有任何建议对我有用。进一步的调查和一定程度的牵扯,最终让我仔细检查了我的应用的构建设置,试图找出问题所在。

                      事实证明,我的项目仍然指向原始目标的权利文件,而不是拥有自己的权利文件。为了解决这个问题,我导航到 Finder 中的原始权利文件(例如 ${SRCROOT}/MyProject/Entitlements/TargetName.entitlements),在同一文件夹中创建一个副本,然后将其重命名(例如 NewTargetName .entitlements)。

                      然后,我打开了我的新权利文件并更改了 application-identifier 字段以匹配我的新目标捆绑标识符的结尾(例如 ABCDEFGH.US.co.fake-company.superduperapp-newtargetname )。

                      最后,我将构建设置中的“代码签名权利”字段更新为我的权利文件的路径(对我来说,这类似于 ${SRCROOT}/MyProject/Entitlements/TargetName.权利)。

                      我返回到“签名和功能”选项卡,瞧,问题已解决。希望有人觉得这很有用。

                      【讨论】:

                        【解决方案20】:

                        转到 Xcode 的 Info 选项卡并更改 Bundle identifier 字段 - 更改应用名称后,即使我在 General 选项卡上更改了 Bundle Identifier,它也没有改变。上述修复对我不起作用,但这个修复立即起作用。

                        【讨论】:

                          【解决方案21】:

                          我在使用 Xcode 12 beta 3 (app submissions started today) 中的全新应用时遇到了这个问题。

                          Xcode 启用了“自动管理签名”。但是,“签名证书”中显示的团队 ID 与 iTunes Connect 网站中显示的团队 ID 不匹配。这是阻止应用上传的根本原因。

                          我是如何解决的:

                          1. 我为 App Store 分发手动创建了配置文件
                          2. 在 Xcode 中,我在首选项 -> 帐户中点击了“下载手动配置文件”
                          3. 然后,我关闭了“自动管理签名”。
                          4. 在下拉列表中选择配置文件后,正确的团队 ID 会出现在“签名证书”下

                          【讨论】:

                            【解决方案22】:

                            我在设置运行 exportArchive cmd 并上传到 AppStore 的 Gitlab 管道时遇到了同样的问题。我可以通过将 Build Settings 中的 DEVELOPMENT_TEAM 更改为 Signing & Certs 中选择的相同 Team 来使其工作。

                            因为之前它被设置为空白,默认情况下使用另一个 DEV TEAM id 这是不正确且不匹配的,它抱怨“应用程序标识符”= 12331232.com.bannana.apples.peach 不匹配.这导致我设置了正确的 DEV TEAM 并且它起作用了。

                            Xcode 版本:11.3.1 版

                            我希望这对某人有所帮助。

                            【讨论】:

                              【解决方案23】:

                              我们的设置

                              多个目标:

                              • 子应用
                              • 观看
                              • 应用剪辑
                              • 今天的小部件

                              ...并使用 iCloud。

                              打开和关闭 iCloud 对我们来说不是一个选项。我们已经在生产中使用它,而不是乱用它......我在某些时候也收到了原始问题的信息和这个变体:

                              配置文件与权利文件的值不匹配 应用程序标识符和钥匙串访问组权利。

                              解决方案

                              从这里的其他回复中得到暗示,我们确保所有目标都有一个.entitlements 文件。如果目标没有,我们会像这样创建一个空的:

                              <?xml version="1.0" encoding="UTF-8"?>
                              <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
                              <plist version="1.0">
                              <dict/>
                              </plist>
                              

                              ...并将Build Settings 中的目标Code Signing Entitlement 指向空的.entitlements 文件。

                              解决了!

                              【讨论】:

                                【解决方案24】:

                                删除位于~/Library/MobileDevice/Provisioning Profiles/ 的所有个人资料

                                【讨论】:

                                  【解决方案25】:

                                  就我而言,我不得不说:

                                   <key>aps-environment</key>
                                   <string>development</string>
                                  

                                  在所有扩展名为.entitlements的文件中

                                  【讨论】:

                                    【解决方案26】:

                                    在我的例子中,我使用 --dart-define 从一个代码库创建多个应用程序,并在 Flutter 应用程序中构建风味。 我做对了一切,但只有一个 如上面评论中所述 https://stackoverflow.com/a/65292545/8787695

                                    我已经在构建设置中写了 app_suffix (PRODUCT_BUNDLE_IDENTIFIER = com.flutter.myapp$(APP_SUFFIX))。 但我还在信息选项卡中将 app_suffix 写入了 Bundle 标识符。

                                    【讨论】:

                                      【解决方案27】:

                                      我有同样的问题,因为我在entitlements 文件中的iCloud Key-Value Store 中有错误的值。我设置了以下值,错误就解决了:

                                      iCloud Key-Value Store = $(TeamIdentifierPrefix)$(CFBundleIdentifier)
                                      

                                      【讨论】:

                                        猜你喜欢
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 2021-04-19
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 2017-03-13
                                        • 2021-04-19
                                        相关资源
                                        最近更新 更多