错误 ITMS-90164/90046:无效的代码签名权利

ERROR ITMS-90164/90046: Invalid Code Signing Entitlements

注意:我正在使用 Xamarin 进行开发。 Xamarin 论坛 here

中发布了类似问题

我正在创建一个名为 CompanyApp 的应用程序。然后我为它创建了一个 App ID com.Company.CompanyApp,以及使用相应 App ID 的 Distribution Provisioning Profile。我上传了二进制文件,它工作得很好。

然后我继续创建该应用程序的演示版本(基本上是同一个应用程序,稍作修改,所以它是相同的解决方案和项目,只是捆绑包签名设置不同),CompanyAppDemo 使用新的 App ID com.Company.CompanyAppDemo,以及使用新 App ID 的新分发配置文件。我更新了 iOS Bundle Signing 选项以使用新的 Provisioning Profile 并生成了 IPA。但是当我将其上传到 Application Loader 时,出现以下错误:

[2015-01-23 16:08:21 SGT] ERROR: 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: 'TEAMID.com.Company.CompanyApp' for the key 'application-identifier' in 'Payload/CompanyApp.app/CompanyApp'"

[2015-01-23 16:08:21 SGT] ERROR: ERROR ITMS-90046: "Invalid Code Signing Entitlements. Your application bundle's signature contains code signing entitlements that are not supported on iOS. Specifically, value 'TEAMID.com.Company.CompanyApp' for key 'application-identifier' in 'Payload/CompanyApp.app/CompanyApp' is not supported. This value should be a string starting with your TEAMID, followed by a dot '.', followed by the bundle identifier."

调试了好几天没搞清楚

我想知道为什么当我与新签约时 配置文件,Application Loader 抛出的错误是指原始 TEAMID.com.Company.CompanyApp 的 ID 而不是 TEAMID.com.Company.CompanyAppDemo?这是 Xamarin 中的错误,它选择了错误的配置文件,还是我遗漏了什么?您不需要为不同的应用程序使用不同的证书,对吧?

请注意,在更改 Xamarin 中的 iOS 构建签名选项之前,我总是在 XCode > 首选项中刷新配置文件列表。

终于在拔毛 2 周后..

由于某些原因,如果 Entitlements.plist 中没有设置为 TEAMID.com.Company.CompanyAppDemo 的键 'application-identifier',Xamarin 将使用原始应用程序标识符,即 TEAMID.com.Company.CompanyApp

因此解决方案是在 Entitlements.plist 中添加指定正确应用程序包 ID 的应用程序标识符。然后在 Build Options > iOS Bundle Signing.

中包含 plist

如果有人像我一样通过搜索 ERROR ITMS-90046 来到这里,我的解决方案是清理它并删除所有预编译框架(自定义框架),然后重新构建。

注意:错误描述将​​键 "aps-environment" 描述为 "development"。

我曾尝试从不是主分支的 git 分支上传构建。为了解决这个问题,我将分支合并到 master 中并重新构建。然后我就可以成功上传构建了。

  1. 在 Xcode
  2. 中转到 Build Phase
  3. 删除所有框架
  4. 将它们加回来
  5. 现在构建->Archieve->上传到App Store

万岁,你已经完成了。问题已解决

如果打包前没有select对应的release certificate,会报ERROR ITMS-90164

构建设置 -> 代码签名身份 -> 发布 -> 任何 IOS SDK

我遇到了同样的问题并通过简单的 Product -> Clean.

解决了

确保您在存档时选择了应用程序目标而不是 WatchKit 应用程序。

如果有人通过使用 get- 搜索错误 ITMS-90164 和错误 ITMS-90046 到达这里- task-allowasp-environment 键:

正如 David P 所说,Product -> Clean before a new Archive 确实解决了我的问题。

我只想补充一点,在我的案例中,我发现错误的 xarchive 缺少以下文件:

在将该 .xarchive 发送给您的客户进行生产签名之前,您可能需要查找已存档的扩展 entitlements.xcent 文件并确保它存在。

同样的问题并通过简单的 产品 -> 清洁.

解决

包含 2 个目标(具有 2 个开发者 ID,2 个权利)的项目可能会导致此问题。 (不要问我这是怎么回事。。。)

归档时,暂时删除另一个授权文件。

这也可能是因为您必须在 iTunes connect 中同意新合同。登录 iTunes connect,您应该会在顶部看到一个横幅,提示您同意最新的合同变更。

对我来说,我可以通过关闭/重新打开自动代码签名功能来解决这个问题:

做一个正确的 Xcode 'Quit' 然后重新启动是让它为我工作的最后行动。

我已经更改了包标识符(对于演示版本)并且在验证我的存档版本时遇到了同样的错误(如问题中所述)。我正在使用 Xcode。仅仅关闭 Xcode 并重新打开我的项目是不够的,但是完整的 'Quit' 是不够的。我猜有些东西可能缓存在某个地方。

我尝试了此处列出的所有内容,结果发现问题出在我的 .entitlement 文件中,其中包含我一开始从未放入的行,它们只是以某种方式添加的。
删除了这些行并再次尝试,成功了。

对我来说,我在 iOS 捆绑包签名下的自定义权利设置中有错误的文件。删除它,它起作用了!

None 的其他答案为我解决了这个错误,但是这个确实:

  1. 创建新的 XCode 应用程序并检查其代码签名设置。

  2. 尝试将您的应用设置为类似于默认 XCode 7 或 Xcode 8 签名和配置设置,此处显示 XCode 7,它在 XCode 8.

  3. 中再次更改

  1. 如果以上还不够,您可能需要再做一次,但这次,在您这样做之前,请从您的苹果密钥环中删除任何旧的过期配置文件,或者删除并 re-sign 到您的苹果开发人员中XCode 首选项中的 (itunes) 帐户。务必在进行任何更改后退出 XCODE 并重新启动。然后再次添加您的帐户,并让 XCode 获取您的新签名和团队信息。

经过几个小时的调查,我找到了一个简单的解决方案。

我没有使用应用程序加载器来上传应用程序,而是使用了 XCode 的 Organizer,它在上传时没有任何警告!

对我来说,问题是自动添加的 Entitlements.plist 是空的。将其从自定义权利字段中删除并解决了问题。

我刚刚在 entitlements.plist 中将访问域的值从 applinks:htts://domain.app.link 重命名为 applinks:domain。app.link 它就像一个魅力。干杯!

我的问题是我使用了错误的包来创建 IPA 文件

在 Entitlements.plist 中更改:

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

为此:

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

我遇到了完全相同的问题,这是一个非常愚蠢的错误。我不想让任何人花时间在这上面,所以对于这个:

那么这里发生了什么,我在部署目标中输入了“10”。那应该是 10.0。这就是产生臭名昭著的错误 ITMS-90164/90046: Invalid Code Signing Entitlements for me!

您应该检查您的权利。它就像 plist 文件。将其编辑为 development 并删除额外的字段。

enter image description here

我的两分钱。

刚才我陷入了这个问题,因为当我从苹果开发者门户复制我的团队 ID / 应用程序 ID 时,这给 entitlement.plist 带来了很多不相关的价值。我没有注意到这一点,因为我使用 Xcode 编辑 entitlement.plist 并且输入框不会显示第一个换行符后的所有内容。

对于这种情况,我建议 entitlement.plist 使用纯文本编辑器。

谢谢, 塞缪尔

在尝试了最近几天在 Whosebug 阅读的所有技巧后,我删除了文件 "xxxxxx.entitlements" 并重新生成它。我单击 Capabilities,select 在 Associated Domains 上打开并添加 "Domains"。然后在功能 > 推送通知中单击修复 "Add the Push Notifications entitlement to your entitlement file"。

制作让我做ARCHIVE成功

我有一个 link 像这样 webcredentials:https://************.link,这导致我上传失败。我删除了它,问题就解决了。

权利文件中有空数组,删除那些可以解决问题。