错误 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 周围的值无效。