您的应用程序包签名中的权利与配置文件中包含的权利不匹配

时间:2021-01-14 01:45:25

标签: ios xcode flutter

我已经向 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 构建一个 Flutter 项目。我尝试了以下方法:

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

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

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

更新 2: Apple 已最终解决了该问题,不再需要任何变通方法。

10 个答案:

答案 0 :(得分:17)

我遇到了类似的错误。

我相信 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提交成功。

答案 1 :(得分:16)

解决方案

对我有用的是删除 .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/>

答案 2 :(得分:12)

删除“com.apple.developer.healthkit.access”无济于事。到目前为止,我们只能希望等待 Apple 解决这个问题。

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

相关:

答案 3 :(得分:10)

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

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

!如果您为 TestFlight 提交应用,这项工作就成功了!

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

什么对我有用:首先,当您启用应用的 HealthKit 功能时:您还必须选中临床健康记录复选框!在此处输入图片说明 mathjs

接下来,您必须在应用的 Info.plist 文件中提供 Health Records Usage 字符串。在此处输入图片说明 enter image description here

答案 4 :(得分:5)

从权利文件中删除空的 iCloud 容器权利(数组)为我解决了这个问题。似乎是 Apple 的服务器端更改,不再允许在那里使用空数组。

答案 5 :(得分:4)

什么对我有用

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

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

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

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

  • 重新添加 HealthKit

2

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

3

完成后,您将能够看到您的 .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

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

答案 6 :(得分:4)

Apple 已解决此问题。您现在可以尝试将应用提交到 TestFlight,而无需进行任何更改。

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

答案 7 :(得分:2)

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

答案 8 :(得分:1)

我遇到了与网络扩展相同的问题,它也是空的,从权利中删除它解决了这个问题。

答案 9 :(得分:1)

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

我们最终会导致应用崩溃,如下所示:

<块引用>

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

相关问题