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

Posted

技术标签:

【中文标题】错误 ITMS-90164/90046:无效的代码签名权利【英文标题】:ERROR ITMS-90164/90046: Invalid Code Signing Entitlements 【发布时间】:2015-03-22 07:24:02 【问题描述】:

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

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

然后我继续创建应用程序的演示版本(基本上是相同的应用程序,稍作修改,所以它是相同的解决方案和项目,只是不同的捆绑签名设置),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' 不支持在“有效负载/CompanyApp.app/CompanyApp”中。这个值 应该是一个以您的 TEAMID 开头的字符串,后跟一个点“.”, 后跟包标识符。”

我已经调试了好几天了,但无济于事。

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

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

【问题讨论】:

【参考方案1】:

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

注意:错误描述将​​关键“aps-environment”描述为“开发”。

【讨论】:

你能再解释一下吗? 是的,在我的应用程序中,我使用的是自定义框架,它们被添加到“构建阶段”“目标依赖项”部分,所以当我编译应用程序时,它们会被编译并签名。此外,我在每个框架“构建阶段”中都有一个脚本,将已编译的框架移动到另一个文件夹。签名过程似乎有一个错误,我认为关键部分是删除框架,迫使编译器重新编译和签名。这个错误再也不会发生了。 这个成功了,我只是清理它并再次编译并没有改变任何东西,为什么它第一次失败了?谜团 同样的问题和同样的修复!你让我头疼不已!非常感谢。 我所要做的就是清理...这是在将大约 50 个构建上传到 TestFlight 后出现的新错误【参考方案2】:

我遇到了同样的问题,用一个简单的Product -> Clean解决了。

【讨论】:

感谢帮助我解决了错误 ITMS-90164:“无效的代码签名权利。您的应用程序包签名中的权利与配置文件中包含的权利不匹配。根据配置文件,该捆绑包包含一个不允许的键值:“Payload/Palau Moja.app/Palau Moja”中键“get-task-allow”的“true””错误 ITMS-90164:“无效的代码签名权利。您的应用程序包签名中的权利与配置文件中包含的权利不匹配。 出现与 Josep 相同的错误并清理 -> 存档 -> 再次上传解决它。感谢您发布此解决方案! 你在哪里做Product->Clean?在 XCode 或 Visual Studio 中?我正在使用 Xamarin 进行开发,顺便说一句。【参考方案3】:

终于在拔毛 2 周后..

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

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

【讨论】:

xamarin 是这样一个生产力提升!【参考方案4】:

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

正如 David P 所说,Product -> Clean 在新存档解决我的问题之前确实解决了我的问题。

我只想补充一点,就我而言,我观察到有问题的 xarchive 缺少以下文件:

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

【讨论】:

【参考方案5】:

在 Entitlements.plist 中更改它:

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

到这里:

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

【讨论】:

【参考方案6】:

同样的问题,用一个简单的Product -> Clean解决了。

【讨论】:

【参考方案7】:

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

【讨论】:

你的救命稻草 :) 一定会喜欢苹果不相关的错误信息【参考方案8】:

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

【讨论】:

【参考方案9】:

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

【讨论】:

【参考方案10】:

如果打包前没有选择对应的发布证书,会报ERROR ITMS-90164

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

【讨论】:

【参考方案11】:

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

【讨论】:

【参考方案12】:

其他答案都没有为我解决这个错误,但这确实:

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

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

    如果以上还不够,您可能需要再做一次,但这一次,在您做之前,请从您的 Apple Keyring 中删除任何旧的过期配置文件或删除并重新登录您的 Apple 开发人员 (iTunes) 帐户在 XCode 首选项中。请务必在任何更改后退出 XCODE 并重新启动。然后再次添加您的帐户,让 XCode 获取您的新签名和团队信息。

【讨论】:

【参考方案13】:

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

【讨论】:

【参考方案14】:

一个包含 2 个目标(具有 2 个开发人员 ID,2 个权利)的项目可能会导致这种情况。 (别问我怎么回事……)

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

【讨论】:

【参考方案15】:

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

在验证我的存档构建时,我更改了包标识符(用于演示版本)并得到了相同的错误(如问题中所述)。我正在使用 Xcode。仅仅关闭 Xcode 并重新打开我的项目是不够的,但完全“退出”就足够了。我猜有些东西可能缓存在某个地方。

【讨论】:

这是为我做的。 XCode 有时会很挑剔。【参考方案16】:

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

【讨论】:

【参考方案17】:

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

【讨论】:

【参考方案18】:
    在 Xcode 中转到 Build Phase 删除所有框架 重新添加它们 现在构建->存档->上传到 App Store

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

【讨论】:

【参考方案19】:

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

【讨论】:

【参考方案20】:

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

【讨论】:

截图会很好。【参考方案21】:

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

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

【讨论】:

【参考方案22】:

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

【讨论】:

【参考方案23】:

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

所以这里发生的事情是,我在部署目标中输入了“10”。那应该是 10.0。这就是臭名昭著的 ERROR ITMS-90164/90046: Invalid Code Signing Entitlements for me 的原因!

【讨论】:

【参考方案24】:

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

enter image description here

【讨论】:

【参考方案25】:

我的两分钱在这里。

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

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

谢谢, 塞缪尔

【讨论】:

【参考方案26】:

在尝试了过去几天在 *** 上阅读的所有技巧后,我删除了文件“xxxxxx.entitlements”并重新生成它。我点击 Capabilities,在 Associated Domains 选择 ON 并添加“Domains”。然后在 Capabilities > Push Notifications 点击 Fix "Add the Push Notifications entitle to your entitlement file"。

让我做到存档成功

【讨论】:

【参考方案27】:

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

【讨论】:

以上是关于错误 ITMS-90164/90046:无效的代码签名权利的主要内容,如果未能解决你的问题,请参考以下文章

错误:指定的资源名称包含无效字符。错误代码:无效资源名称

facebook 发送 API 错误代码:100 API 错误描述:无效参数错误消息:“链接”无效

错误:流“无效”中的类型代码无效

错误:错误域 = NSCocoaErrorDomain 代码 = 3840“字符 0 周围的值无效。” UserInfo=NSDebugDescription=字符 0 周围的值无效。

错误代码:12114 无效的项目 URL。由于参数无效,交易被拒绝

无效 POST 参数的错误代码