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

问题描述 投票:76回答:23

注意:我正在开发使用Xamarin。类似的问题张贴在Xamarin论坛here

我正在创建一个名为CompanyApp的应用程序。然后我为com.Company.CompanyApp创建了一个App ID,以及使用相应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]错误:错误ITMS-90164:“无效的代码签名权利。您的应用程序包签名中的权利与供应配置文件中包含的权利不匹配。根据配置配置文件,捆绑包含一个不允许的密钥值:'TEAMID.com.Company.CompanyApp',用于'Payload / CompanyApp.app / CompanyApp'中的密钥'application-identifier'

[2015-01-23 16:08:21 SGT]错误:错误ITMS-90046:“无效的代码签名权利。您的应用程序包的签名包含iOS不支持的代码签名权利。具体来说,价值'TEAMID.com.Company .CompanyApp'不支持'Payload / CompanyApp.app / CompanyApp'中的密钥'application-identifier'。该值应该是以TEAMID开头的字符串,后跟一个点'。',后跟包标识符。“

我已经调试了好几天才弄明白无济于事。

我想知道为什么当我使用新配置文件签名时,Application Loader抛出的错误引用了原始TEAMID.com.Company.CompanyApp的ID而不是TEAMID.com.Company.CompanyAppDemo?这是Xamarin中的一个错误,它找错了配置文件或者我错过了什么?对于不同的应用程序,您不需要不同的证书吗?

请注意,在更改Xamarin中的iOS Build Signing选项之前,我始终在XCode> Preference中刷新了Provisioning Profile列表。

ios xamarin app-store provisioning-profile application-loader
23个回答
132
投票

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

注意:错误描述说明了关键的“aps-environment”作为“开发”。

Edit: The actual error message


2
投票

确保在归档时选择了App目标而不是WatchKit App。


2
投票

没有其他答案为我解决了这个错误,但是这样做了:

  1. 创建新的XCode应用程序并检查它的代码签名设置。
  2. 尝试使您的应用程序设置类似于默认的XCode 7或Xcode 8签名和配置设置,此处显示XCode 7,它在XCode 8中再次更改。

provisioning and signing

  1. 如果上述内容不够,您可能需要再次执行此操作,但这一次,在您执行之前,从Apple密钥环中删除任何旧的过期配置文件或删除并重新登录XCode中的Apple开发人员(itunes)帐户喜好。确保在任何更改后退出XCODE和RESTART。然后再次添加您的帐户,让XCode获取您的新签名和团队信息。

1
投票

我曾尝试从不是主人的git分支上传一个构建版本。为解决此问题,我将分支合并到主服务器并再次构建。然后我就能成功上传构建版本。


1
投票

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

归档时,请暂时删除其他授权文件。


1
投票

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

在验证我的归档版本时,我更改了捆绑标识符(对于演示版本)并得到了相同的错误(在问题中详述)。我正在使用Xcode。刚关闭Xcode并重新打开我的项目是不够的,但完全'退出'是。有些东西可能是在我猜的地方缓存的。


1
投票

我尝试了这里列出的所有内容,结果发现问题是我的.entitlement文件,这个行我从来没有放在第一位,他们只是以某种方式添加。 删除了这些行并再次尝试,工作。


1
投票

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


0
投票
  1. 去Xcode的Build Phase
  2. 删除所有框架
  3. 添加它们
  4. 现在build-> Archive->上传到App Store

华友世纪,你完成了它。问题解决了


0
投票

对我来说,我能够通过再次关闭/打开自动代码签名功能来解决它​​:

enter image description here


0
投票

对我来说,我在iOS Bundle Signing下的Custom Entitlements设置中输入了错误的文件。删除它,它的工作!


62
投票

我遇到了同样的问题,用一个简单的产品 - >清洁解决了。


0
投票

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

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


0
投票

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


0
投票

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

Mistake

那么这里发生的事情就是我在部署目标中输入“10”。应该是10.0而不是。这就产生了臭名昭着的错误ITMS-90164/90046:我的代码签名权利无效!


0
投票

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

enter image description here


19
投票

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

就像David P说的那样,产品 - >清新之前,新的存档确实解决了我的问题。

我只想补充说,在我的情况下,我发现有缺陷的xarchive缺少以下文件:

在将.xarchive发送到客户端以进行生产签名之前,您可能需要查找archived-expanded-entitlements.xcent文件并确保它存在。


17
投票

最后在拔毛2周后..

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

因此,解决方案是在Entitlements.plist中添加指定正确应用程序包ID的application-identifier。然后在构建选项> iOS捆绑包签名中包含plist。


8
投票

同样的问题,用简单的产品 - >清洁解决。


6
投票

在Entitlements.plist中更改此内容:

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

对此:

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

5
投票

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


4
投票

对我来说,问题是一个自动添加并且为空的Entitlements.plist。从“自定义权利”字段中删除它并解决了问题。

View of the iOS Bundle Signing on Visual Studio 2015


3
投票

如果在打包之前未选择相应的发行证书,将报告ERROR ITMS-90164

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

© www.soinside.com 2019 - 2024. All rights reserved.