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

Posted

技术标签:

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

我遇到了一个奇怪的问题,我没有更改 expo app.json 中的任何 expo 设置,突然 Apple 拒绝存档,原因如下:

错误 ITMS-90164:“无效的代码签名权利。权利 在您的应用程序包签名中与包含的不匹配 在配置文件中。根据配置文件, 捆绑包包含不允许的键值:键的“[]” 'com.apple.security.application-groups' 在 '有效载荷/ExpoKitApp.app/com.company.appname'。

我的博览会配置如下所示:


  "expo": 
    "name": "App Name",
    "slug": "app-name-slug",
    "version": "1.1.1",
    "orientation": "portrait",
    "icon": "./src/assets/icon.png",
    "splash": 
      "image": "./src/assets/splash.png",
      "resizeMode": "cover",
      "backgroundColor": "#000000"
    ,
    "updates": 
      "fallbackToCacheTimeout": 0
    ,
    "assetBundlePatterns": [
      "**/*"
    ],
    "ios": 
      "supportsTablet": false,
      "bundleIdentifier": "com.company.appname",
      "buildNumber": "1.1.1",
      "infoPlist": 
        "NSCameraUsageDescription": "App Name uses your camera to allow you to upload a profile picture.",
        "NSPhotoLibraryUsageDescription": "App Name uses your photos to allow you to upload a profile picture."
      
    ,
    "android": 
      "package": "com.company.appname",
      "versionCode": 13,
      "permissions": []
    ,
    "web": 
      "favicon": "./src/assets/favicon.png"
    ,
    "androidStatusBar": 
      "barStyle": "light-content",
      "backgroundColor": "#042f3d"
    ,
    "androidNavigationBar": 
      "barStyle": "dark-content",
      "backgroundColor": "#042f3d"
    ,
    "description": ""
  

诚然,这是我在使用 Apple Review 系统时遇到的第一个问题(这是第一个应用程序),所以我不知道该去哪里找。任何帮助将不胜感激。

编辑:我在 windows 上使用 expo,并且我有 App Store Connect。

【问题讨论】:

这不是答案。然而,就在今天,我开始在我尝试提交到商店的 react-native 应用程序上收到同样的错误(权利问题,注意权利值的空数组)。昨天提交工作,开发者资料和权利文件都与成功提交没有变化。也许苹果开发网站的上游发生了一些变化,并且配置文件需要重新同步,这是我的下一个调查步骤。祝你好运 @MikeHardy,这里也是。 @jspizziri 我刚刚在下面发布了一个真实的答案,在成功提交应用后 这能回答你的问题吗? The entitlements in your app bundle signature do not match the ones that are contained in the provisioning profile 【参考方案1】:

我当然愿意纠正这个答案,但正如上面评论中提到的那样:

猜测根本原因:(Apple App Store 是一个封闭系统,我们只能猜测)

我相信 Apple 后端从今天开始已经发生了变化,并且已经开始对采用数组值的授权键应用更严格的规则。

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

支持这一断言的证据:

我有一个权利文件,其中包含一个用于“应用内消息传递”权利的密钥,其中包含一个空数组,如下所示:
        <key>com.apple.developer.in-app-payments</key>
        <array/>

直到昨天还好(我成功提交了一个构建,并且已经提交了一年多这样的构建。

现在已经不行了,你的错误中有一个类似的空数组消息。

修复:

打开 .xcworkspace(Xcode 项目)文件并导航到我的项目的签名和授权,并删除有问题的授权密钥

无论如何,密钥都是空的,所以除了现在权利文件完全删除了我在上面引用的行之外应该没有其他影响

App Store 提交成功。

【讨论】:

很好,这听起来像是我的问题。由于我在 Windows 上并使用 expo 进行构建,但我没有 .xcworkspace,并且 expo 文档没有提到如何更改这些:docs.expo.io/versions/latest/config/app 不幸的是,除了提交上游问题之外,别无他法。幸运的是,根据我维护 react-native 存储库和与 expo 人员互动的经验,他们非常响应迅速。【参考方案2】:

要解决此问题(即使您使用 Expo 管理的工作流程并且无权访问 .entitlements 文件)进入您的 Apple Developer portal's "Identifiers" tab,打开相关的应用 ID,并确保您没有'没有任何项目选中,但没有配置

例如,在这种情况下,您似乎检查了应用组项目,但实际上没有配置应用组,所以它看起来像这样:

【讨论】:

以上是关于您的应用程序包签名中的权利与您的配置文件中包含的权利不匹配的主要内容,如果未能解决你的问题,请参考以下文章

权利文件与您的配置文件中指定的不匹配。(0xE8008016)

权利文件与您的配置文件中指定的不匹配。(0xE8008016)

使用 Flash IDE CS6 编译时出现错误 ITMS-90163

可执行文件已使用 App Store 使用无效权利进行签名

无法解决错误:可执行文件在 xcode 4.2 中使用无效的调试权利签名

iTunes连接中的无效二进制文件