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

时间:2015-01-23 09:33:07

标签: ios xamarin app-store provisioning-profile application-loader

注意:我正在使用Xamarin进行开发。类似问题发布在Xamarin论坛here

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

然后我继续创建应用程序的演示版本(基本上是相同的应用程序,经过少量修改,因此它是相同的解决方案和项目,只是不同的捆绑签名设置), CompanyAppDemo 带有新的应用ID com.Company.CompanyAppDemo ,以及使用新应用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上不支持的代码签名权利。特别,   关键'application-identifier'的值'TEAMID.com.Company.CompanyApp'   在“Payload / CompanyApp.app / CompanyApp”中不受支持。这个值   应该是以TEAMID开头的字符串,后跟一个点'。',   然后是包标识符。“

我已经调试了好几天才算无济于事。

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

请注意,我一直刷新XCode中的Provisioning Profile列表>在Xamarin中更改iOS Build Signing选项之前的首选项。

27 个答案:

答案 0 :(得分:132)

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

注意:错误描述说明了关键" aps-environment" as" development"。

Edit: The actual error message

答案 1 :(得分:62)

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

答案 2 :(得分:19)

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

1

像David P说的那样,产品 - >在新存档解决我的问题之前清理

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

2

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

答案 3 :(得分:17)

最后在拔毛2周后..

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

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

答案 4 :(得分:8)

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

答案 5 :(得分:5)

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

答案 6 :(得分:5)

在Entitlements.plist中更改此内容:

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

对此:

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

答案 7 :(得分:5)

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

答案 8 :(得分:4)

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

View of the iOS Bundle Signing on Visual Studio 2015

答案 9 :(得分:3)

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

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

答案 10 :(得分:2)

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

答案 11 :(得分:2)

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

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

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

    < / LI>

    provisioning and signing

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

答案 12 :(得分:1)

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

答案 13 :(得分:1)

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

答案 14 :(得分:1)

我尝试了这里列出的所有内容,结果发现问题是我的.entitlement文件,其中包含我从未输入过的行,它们只是以某种方式添加了。
删除了这些行并再次尝试,工作。

答案 15 :(得分:1)

做一个正确的Xcode&#39; Quit&#39;然后重启是让它为我工作的最后一个动作。

我更改了捆绑包标识符(针对演示版)并在验证我的归档版本时遇到了相同的错误(详见问题)。我正在使用Xcode。刚关闭Xcode并重新打开我的项目是不够的,但是完全退出&#39; Quit&#39;是。某些东西可能在我猜测的地方被缓存了。

答案 16 :(得分:1)

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

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

答案 17 :(得分:0)

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

答案 18 :(得分:0)

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

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

答案 19 :(得分:0)

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

enter image description here

答案 20 :(得分:0)

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

答案 21 :(得分:0)

  1. 转到Xcode中的Build Phase
  2. 删除所有框架
  3. 将它们添加回来
  4. 现在构建 - &gt; Archieve-&gt;上传到App Store
  5. 华友世纪,你完成了它。问题解决了

答案 22 :(得分:0)

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

Mistake

所以这里发生的事情是,我进入了&#39; 10&#39;在部署目标中。应该是10.0而不是。这就产生了臭名昭着的ERROR ITMS-90164/90046:我的代码签名权利无效!

答案 23 :(得分:0)

You should check your Entitlements. It is like plist file. Edit it to development and the remove the extra fields.

enter image description here

答案 24 :(得分:0)

我的两分钱在这里。

现在,我陷入了这个问题,因为当我从Apple开发人员门户网站复制我的TeamID /应用程序ID时,这为entitlement.plist带来了许多无关的价值。我没有注意到这一点,因为我正在使用Xcode编辑entitlement.plist,并且输入框不会在第一个换行符之后显示所有内容。

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

谢谢, 塞缪尔

答案 25 :(得分:0)

尝试了最近几天在 Stackoverflow 上阅读的所有技巧之后,我删除了文件“ xxxxxx.entitlements”并重新生成。我单击功能,在关联域中选择“打开”,然后添加“域”。然后在功能>推送通知中单击修复“将推送通知权利添加到您的权利文件中”。

让我做 ARCHIVE 成功

答案 26 :(得分:0)

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