【问题标题】:The entitlements in your app bundle signature do not match the ones that are contained in the provisioning profile您的应用程序包签名中的权利与配置文件中包含的权利不匹配
【发布时间】:2021-04-19 01:47:58
【问题描述】:

即使在昨天,我也已经向 TestFlight 提交了许多应用构建,但是今天当我尝试通过 XCODE 将我的应用提交到 TestFlight 时,我收到以下错误:

ERROR ITMS-90164: "Invalid Code Signing Entitlements. The entitlements in your app bundle signature do not match the ones that are contained in the provisioning profile. According to the provisioning profile, the bundle contains a key value that is not allowed: '[ ]' for the key 'com.apple.developer.healthkit.access' in 'Payload/Runner.app/Runner'."

我正在通过 XCODE 构建一个颤振项目。我尝试了以下方法:

  • 清理我的项目。
  • 在 XCODE 中重新启用自动应用签名。
  • 从 ~/Library/MobileDevice/Provisioning\ Profiles/ 中删除我的配置文件
  • 禁用自动登录 xcode 并通过 Apple 开发者网站创建我自己的配置文件

但我仍然收到此错误。与上次上传我的应用程序相比,我的启用并没有改变。请帮忙,谢谢。

更新 1: 似乎是在导致此错误的 Apple 端所做的更改。苹果尚未提供官方回应/解释。下面提供了一些解决方法。我为 Health Kit 启用启用临床健康记录使用,因为此解决方法不使用任何非 Apple 批准的更改。所以在技术上仍然不是最终解决方案,而是一种解决方法。

更新 2: Apple 已经解决了这个问题,不再需要解决方法。

【问题讨论】:

  • 我遇到了同样的问题,但使用了com.apple.developer.icloud-container-identifiers 键。此外,我上传的构建在 40 分钟后从未到达 App Store Connect
  • 看来Apple已经修复了他们的错误,我刚刚上传了一个没有触及空com.apple.developer.healthkit.access键/值的构建,并且构建被上传到TestFlight就好了,因为现在 0:00 1 月 23 日 +10,从下面开始。

标签: ios xcode flutter


【解决方案1】:

我遇到了类似的错误。

我相信 Apple 后端已经改变,并开始对采用数组值的授权键应用更严格的规则。

我相信 Apple 后端曾经接受用于获取数组值的权利键的空数组,但现在要求权利键要么根本不存在,要么包含实际值。

支持这一断言的证据:

  • 我有一个权利文件,其中包含“com.apple.developer.icloud-container-identifiers”权利的密钥,其中包含一个空数组,如下所示:
  <key>com.apple.developer.icloud-container-identifiers</key>
  <array/>
  • 直到昨天还好(我成功提交了一个构建,并且已经提交了一年多这样的构建)。

解决方法:

.entitlements 文件中删除或注释掉以下行:

  <key>com.apple.developer.icloud-container-identifiers</key>
  <array/>
  • 密钥无论如何都是空的,所以在删除后应该没有效果。

现在TestFlight提交成功了。

【讨论】:

  • 这不适用于 healthkit 访问。中断集成,应用无法再读取 healthkit 数据。
【解决方案2】:

解决方案

对我有用的是删除 .entitlements 文件中的以下行

<key>com.apple.developer.healthkit.access</key>
<array/>

验证

  • 我仔细检查过,通过 Xcode 构建时,HealthKit 访问仍然适用于读/写
  • 我通过 TestFlight 测试了应用程序,一切看起来都还不错
  • 我的应用已获得批准,现有用户和新用户都可以正常使用 :)

旁注

  • 我有同样的问题。我已经好几个月没有更改权利了,突然出现了这个错误。可能是 Apple 更改了一些逻辑并对其后端权利验证应用了更严格的规则。

  • 有趣的是,如果您创建一个新的 Xcode 项目并添加 HealthKit 权利,它会创建如下权利:

<key>com.apple.developer.healthkit</key>
<true/>
<key>com.apple.developer.healthkit.access</key>
<array/>

【讨论】:

  • 这样做我可以上传构建。但二进制文件因 ITMS-90034: Missing or invalid signature - 包路径“Payload/XXX.app”处的包“appid”未使用 Apple 提交证书签名而被拒绝。
  • devleoper.apple 链接已损坏
  • 我相信你也需要删除它下面的行:&lt;array/&gt;,否则它是一个无效的 plist。
  • 您好,我正要将解决方案应用到我的项目中,想知道您的应用是否获得了苹果的批准?谢谢!
  • 是的,该应用程序已获得批准并在 AppStore 上完美运行 :) -> 抱歉忘记更新帖子 -> 现在会更新
【解决方案3】:

删除“com.apple.developer.healthkit.access”不会解决问题。到目前为止,我们只能希望等待 Apple 解决此问题。

论坛上的帖子(我无法访问 Marceeelll 的帖子): https://developer.apple.com/forums/thread/671352

相关:

【讨论】:

  • 还没有看到这个帖子。但是 bricepolllock1 建议按照我的建议做同样的事情。它出什么问题了? developer.apple.com/forums/thread/…
  • @Marceeelll 您可以在线程中阅读那些 cmets,该解决方案仅帮助一些遇到此错误的人。应用此解决方案后会出现许多新问题,例如无效捆绑包(在相关帖子中),无法获得 Apple Health 许可或构建未显示在 Testflight 上
  • 这不是解决方案,是的,它允许您构建和上传,但会使捆绑包无效。
  • @Marceeelll 删除密钥完全破坏了我的 healthkit 集成。
【解决方案4】:

对我来说,解决方案是删除 .entitlements 文件中的以下行

<key>com.apple.developer.healthkit.access</key>
<array/>

!如果您为 TestFlight 提交应用程序,这将起作用!

如果您提交应用程序以供审核,这将不起作用:(。二进制文件将被拒绝 ITMS-90000:此捆绑包无效 - $message。

什么对我有用:首先,当您启用应用的 HealthKit 功能时:您还必须选中临床健康记录复选框!

接下来,您必须在应用的 Info.plist 文件中提供 Health Records Usage 字符串。

【讨论】:

    【解决方案5】:

    “icloud-container”对我来说同样的错误,只需在你的 .权利文件:

    <key>com.apple.developer.[YOUR-ERROR]</key>
    <array/>
    

    【讨论】:

      【解决方案6】:

      从权利文件中删除空的 iCloud 容器权利(数组)解决了我的问题。似乎是来自 Apple 的服务器端更改,不再允许存在空数组。

      【讨论】:

        【解决方案7】:

        Apple 已解决此问题。您现在可以尝试在不进行任何更改的情况下将应用提交到 TestFlight。

        Apple 开发者论坛上的帖子:https://developer.apple.com/forums/thread/671352

        【讨论】:

          【解决方案8】:

          什么对我有用

          在开始尝试之前,我检查了我的 .entitlements 文件,它看起来像这样:

              ...
              <key>com.apple.developer.healthkit</key>
              <true/>
              <key>com.apple.developer.healthkit.access</key>
              <array/>
              ...
          

          第 1 步:移除并再次添加 HealthKit 功能。

          • 从“签名和功能”中删除 HealthKit

          • 重新添加 HealthKit

          第 2 步:检查“临床健康记录”

          完成后,您将能够看到您的.entitlements 文件变为

              <key>com.apple.developer.healthkit</key>
              <true/>
              <key>com.apple.developer.healthkit.access</key>
              <array>
                  <string>health-records</string>
              </array>
          

          第 3 步:将Privacy - Health Records Usage Description 及其值添加到info.plist

          Final:然后我尝试存档并上传到TestFlight,它成功了。

          【讨论】:

          【解决方案9】:

          我注释掉/删除了

          <key>com.apple.developer.healthkit.access</key>
          

          在 .entitlements 中,它可以工作!

          【讨论】:

            【解决方案10】:

            权利中似乎不再允许值是空数组的键。只需删除键/值对即可为我修复它。

            【讨论】:

              【解决方案11】:

              我对网络扩展有同样的问题,它也是空的,从权利中删除它解决了这个问题。

              【讨论】:

                【解决方案12】:

                删除空的 iCloud 容器权利将解决上传问题。但该应用无法使用文档选择器 (UIDocumentMenuViewController) 从 iCloud 中选择任何文档。

                我们最终会在应用程序中崩溃,如下所示:

                *** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“应用程序正在初始化 文档选择器缺少 iCloud 权利。是 com.apple.developer.icloud-container-identifiers 设置?'

                【讨论】:

                  猜你喜欢
                  • 2021-04-19
                  • 2018-02-19
                  • 2016-06-15
                  • 1970-01-01
                  • 2021-09-13
                  • 1970-01-01
                  • 2014-05-02
                  • 1970-01-01
                  相关资源
                  最近更新 更多