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

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

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

然后,我继续创build应用程序的演示版本(基本上与小修改相同的应用程序,所以它是相同的解决scheme和项目,只是不同的包签名设置), CompanyAppDemo与一个新的应用程序ID com.Company.CompanyAppDemo ,以及新的分发预配configuration文件使用新的应用程序ID。 我更新了iOS捆绑签名选项以使用新的供应configuration文件并生成了IPA。 但是,当我上传到应用程序加载器,我得到了以下错误:

[2015-01-23 16:08:21 SGT]错误:错误ITMS-90164:“代码签名授权无效,应用程序包签名中的权利与configuration文件中包含的权利不匹配。configuration文件中包含一个不允许的键值:'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开头的string,后跟一个点”。“,后面跟着包标识符。

我已经debugging了好几天,想不出结果。

我想知道为什么当我用新的configuration文件签名时,Application Loader引发的错误是指原始TEAMID.com.Company.CompanyApp而不是TEAMID.com.Company.CompanyAppDemo的ID? 这是Xamarin中的一个错误,select一个错误的configuration文件,或者我错过了什么? 你不需要不同的证书适用于不同的应用程序吗?

请注意,在更改Xamarin中的iOS构build签名选项之前,我总是刷新XCode> Preference中的Provisioning Profile列表。

如果有人像我一样通过search错误ITMS-90046来到这里,我的解决scheme是做一个Clean,删除所有预编译的框架(自定义框架),然后再次构build。

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

编辑:实际的错误信息

我有同样的问题,并通过一个简单的产品 – >清洁解决

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

1

像大卫P说,一个产品 – >清洁之前,一个新的档案解决了我的问题。

我只想补充说,在我的情况下,我观​​察到错误的xarchive缺less以下文件:

2

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

最后经过两个星期的拔毛

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

因此,解决scheme是在Entitlements.plist中添加指定正确应用程序包ID的应用程序标识符。 然后在Build选项> iOS捆绑签名中包含plist。

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

这也可能是由于您必须同意iTunes连接中的新合约而导致的。 login到iTunes连接,您应该在顶部看到一个横幅,提示您同意最新的合同变更。

如果在打包之前没有select相应的版本证书,则会报告错误ITMS-90164

生成设置 – >代码签名标识 – >发布 – >任何IOS SDK

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

iOS捆绑在Visual Studio 2015上签名的视图

确保在归档时select了App目标,而不是WatchKit App。

我试图从一个不是主的git分支上传一个构build。 为了解决这个问题,我把分支合并到master中,并重新构build。 然后,我能够成功上传构build。

包含2个目标(包含2个开发人员ID,2个权限)的项目可能会导致此问题。 (不要问我是怎么发生的…)

归档时,临时删除另一个权利文件。

做一个适当的Xcode“退出”,然后重新启动是最终的行动,让它为我工作。

我已经更改了包标识符(对于演示版本),并且在validation我的存档构build时得到了同样的错误(如问题中详述的)。 我正在使用Xcode。 closuresXcode并重新开始我的项目是不够的,但一个完整的“退出”是。 有些东西可能被caching在我猜的地方。

我尝试了这里列出的所有东西,结果问题是我的.entitlement文件,有我从未放在第一位的行,他们只是添加某种方式。
删除这些线,并再次尝试,工作。

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

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

  2. 尝试将您的应用设置为与默认的XCode 7或Xcode 8签名和configuration设置类似,此处显示XCode 7,在XCode 8中再次进行更改。

供应和签署

  1. 如果以上不足,则可能需要重新执行此操作,但在此之前,请从您的Apple Keyring中删除所有旧的设置configuration文件,或删除并重新login到XCode中的apple developer(itunes)帐户优先。 确保在任何更改后退出XCODE和RESTART。 然后再次添加您的帐户,让XCode获取您的新签名和团队信息。
  1. 在Xcode中转到Build Phase
  2. 删除所有的框架
  3. 将它们添加回来
  4. 现在build立 – > Archieve->上传到App Store

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

对于我来说,我可以通过closures/再次打开自动代码签名function来解决这个问题:

在这里输入图像说明

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

经过几个小时的调查,我find了一个简单的解决scheme。

我不使用应用程序加载器来上传应用程序,而是使用XCode中的Organizer,并在上传时没有任何警告地工作!

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