应用提交:无效二进制 - 无效签名
Posted
技术标签:
【中文标题】应用提交:无效二进制 - 无效签名【英文标题】:App Submission: Invalid Binary - Invalid Signature 【发布时间】:2014-01-29 00:55:32 【问题描述】:我正在尝试向 ios 应用商店提交更新。我要从 Buzztouch 应用程序转到 Sprite Kit 应用程序。我能够归档 Xcode 项目并提交它。该应用程序的状态为 Upload Received,但大约一分钟后,它变为 Invalid Binary,我收到一封电子邮件:
无效的签名 - 确保您使用分发证书而不是临时证书或开发证书签署了您的应用程序。验证 Xcode 中的代码签名设置在目标级别是否正确(覆盖项目级别的任何值)。此外,确保您上传的包是使用 Xcode 中的 Release 目标构建的,而不是 Simulator 目标。如果您确定您的代码签名设置正确,请在 Xcode 中选择“Clean All”,删除 Finder 中的“build”目录,然后重新构建您的发布目标。
纠正这些问题后,请转到“版本详细信息”页面并单击“准备上传二进制文件”。继续完成提交过程,直到应用状态为“等待上传”。然后,您可以交付更正后的二进制文件。
我已经清理了构建目录,重建了我的发布目标,并多次创建了新的配置文件。所有代码签名身份都设置为 iOS Developer。代码签名和配置文件总是让我有点困惑,我可能会犯一些明显的错误。
我已尝试提交超过 50 次!我觉得这很令人沮丧,因为我已经给 Apple 发送了电子邮件,他们回复了我,但它只是一个包含代码签名信息的开发中心链接。我也花了很多时间在 Internet 上搜索以找到解决此问题的方法,但还没有真正适用于此问题的好的解决方案。
我唯一能想到的要么是因为我要从 Buzztouch 应用程序更改,要么是 Sprite Kit。
这是我的代码签名截图:
【问题讨论】:
您的代码签名错误。您需要使用 iOS Distribution 作为您要发布的模式。 您好@borrrden 我尝试将它们全部更改为iOS Distribution,但它仍然返回相同的内容。 将其更改为 iOS 发行版,然后重复所有清理步骤等。此外,如果未正确执行签名,您应该会在错误窗格中看到警告。你有应用商店证书吗? 我有一个应用商店证书,但过程中没有任何错误。我现在正在重复所有步骤。感谢您的帮助! 嗯,从上面的信息中我可以告诉你的一件事是,只要选择了“iOS Developer”,它就永远不会工作。 【参考方案1】:在 Apple 开发人员支持中,Invalid Signature
二进制拒绝原因还有两个额外的常见原因,
包含特殊字符(即非数字和非字母)的可执行文件。要解决此问题,请将 Xcode 目标的产品名称构建设置从“$TARGET_NAME”更改为仅包含字母/数字字符的字符串。让我知道这是否是问题的原因(以及有问题的字符),因为我会提交错误报告以修复我在此处找到的每个实例。
将未压缩的 Xcode 项目复制到非 HFS+ 格式的硬盘驱动器或从非 HFS+ 格式的硬盘驱动器复制所产生的 Apple 双文件(“双文件”)。要检查这是否导致您被拒绝:
A.在此处运行应用诊断:How do I check if my application's signature has been corrupted?
B.然后检查命令行输出:List of Signature Verification Failure Root Causes。双重文件的诊断信息如下:
resource missing: my.app/._.*
C.来自文档:
以“._”为前缀的文件被认为是 AppleDouble 文件,它 可以通过将未压缩的 Xcode 项目文件夹复制到 非 HFS+ 格式化的磁盘。 AppleDouble 文件必须使用删除 'dot_clean' 命令。 Xcode 项目文件夹是 dot_clean 如下图所示。注意:您可以拖动您的 Xcode 项目 文件夹从 Finder 到终端窗口以自动填充其 进入命令的路径。
dot_clean /path/to/My_Xcode_Project
(如果终端找不到 dot_clean 实用程序,请通过 Xcode > Preferences > Downloads 下载可选的命令行工具)
D.在您的 Xcode 项目上运行 dot_clean
后,创建一个新的应用存档(通过 Xcode > Product > Archive),重新尝试提交。
为防止双重文件,请务必使用 Finder 将 Xcode 项目文件夹压缩为 .zip,然后再将其传输到/从非 HFS+ 格式化的硬盘驱动器。
【讨论】:
我认为 No2 给我造成了这个问题。我尝试从外部 ntfs 硬盘上传。将项目复制到 Mac 的硬盘时,一切正常。 No1 引起了我的问题。我用了 ”?”我的产品名称中的字符。【参考方案2】:这是我在 Mac App Store 遇到类似问题时所做的:
-
重新生成应用的分发和开发证书(来自 Apple Developer's Certificates 站点)。
把两个证书都下载下来,拖到Xcode的图标上(不知道有没有影响,但是提交了这么多失败,我有点迷信了)。
从 Xcode 重新刷新证书和身份。
-
打开 Xcode 的首选项。
转到“帐户”选项卡。
点击了我的帐户
点击了刷新按钮。
作为参考,这是我与签名相关的构建设置。上次我提交应用程序时,那个工作正常(过去两天一直处于“等待审核”状态,所以我猜它通过了他们所有的自动化测试)。
【讨论】:
我很不高兴来自 Apple 的错误电子邮件具有误导性。这花了我很多时间!非常感谢您的工作解决方案!【参考方案3】:您的问题与签名失败有关,因为您的应用未使用最近的分发证书进行签名。检查以下步骤:
1) 检查您的bundle identifier
以列出配置文件,如下图所示。因为它也导致了这个问题。
2)您在构建应用程序时不得使用correct certificates
。只需在 Provisioning Portal 中删除您的证书并创建新证书并在 Xcode 中更新它们。
3) 从您的图片来看,您没有选择正确的配置文件。转到 Organizer / Provisioning Profiles / Refresh 并允许 Xcode 获取最新的。请参阅屏幕截图以了解如何执行此操作。
选择正确的配置文件。
选择正确的代码符号。
4) 清理您的项目。
5) 只需 clean all your targets
。您甚至可以转到/Users/%USERNAME%/Library/Developer/Xcode/DerivedData
并删除其中的所有目录。
see this ref
【讨论】:
您在钥匙串中添加新证书之前是否删除了旧证书?【参考方案4】:在“代码签名身份”下确保您已为“发布”方案选择了分发证书
在“配置文件”下,确保您选择了分发配置文件(不是临时配置文件)
存档和分发,确保在提交时选择相同的证书(在输入您的 iTunesConnect 信息后)
【讨论】:
【参考方案5】:完成以上所有操作后
菜单栏 尝试产品->存档
然后从组织中尝试辞职并提交。
窗口->组织者 选择存档,然后按分发(但我很确定你会知道它是如何工作的)
显然,如果您不能这样做,那么您的签名证书可能确实有问题,更具体地说,您的捆绑标识符可能是罪魁祸首。
另一种选择是您的应用使用您尚未在 developer.apple.com/ios 上为应用 ID 设置的服务,例如游戏中心、推送通知等。祝您好运
【讨论】:
【参考方案6】:检查您的启动图像。它们是否冲突,就像 2 个图像具有相同的名称。因为我遇到了类似的问题,我在 10 分钟内就这样解决了。
【讨论】:
【参考方案7】:为了解决这个问题,我刚刚创建了一个新的 Xcode 项目并将所有内容复制并粘贴到新项目中。
【讨论】:
【参考方案8】:在我的情况下,问题是文件名中没有 ASCII 字符(确实有人让我们嵌入),解决方案是在项目中进行全局搜索:
ls -1 -R -i | grep -a "[^A-Za-z0-9_.':@ /-]"
并从文件名中删除这些字符。
【讨论】:
以上是关于应用提交:无效二进制 - 无效签名的主要内容,如果未能解决你的问题,请参考以下文章
向 App Store 提交二进制文件 - 无效的代码签名权利