应用程序提交:无效的二进制文件 – 无效的签名

我正在尝试向iOSapp store提交更新。 我正在从Buzztouch应用程序转到Sprite Kit应用程序。 我能够存档Xcode项目并提交。 该应用程序获取上传状态,但大约一分钟后,它变为无效的二进制文件,我收到一封电子邮件说:

无效的签名 – 确保您使用分发证书签署了您的应用程序,而不是临时证书或开发证书。 validationXcode中的代码签名设置在目标级别是否正确(它覆盖项目级别的任何值)。 此外,请确保您正在上传的软件包是使用Xcode中的发布目标构build的,而不是Simulator目标。 如果您确定您的代码签名设置是正确的,请在Xcode中select“全部清除”,删除Finder中的“build”目录,然后重新构build您的发布目标。

一旦这些问题得到纠正,请转至“版本详细信息”页面,然后单击“准备好上传二进制文件”。 继续完成提交过程,直到应用状态为“等待上传”。 然后您可以交付更正的二进制文件。

我清理了构build目录,重build了我的发布目标,并多次创build了新的configurationconfiguration文件。 所有的代码签名身份都设置为iOS开发者。 代码签名和configuration文件对我来说总是有点混乱,我可能会犯一些明显的错误。

我已经尝试提交超过50次! 我发现这非常令人沮丧,因为我已经给苹果发邮件了,他们回到我身边,但这只是一个链接到开发中心的代码签名信息。 我也花费了大量的时间在互联网上寻找解决办法,而且还没有一个很好的解决scheme来解决这个问题。

我唯一能想到的是因为我从Buzztouch应用程序更改,或者它是Sprite Kit。

以下是我的代码签名的截图:

代码签名的截图

当我遇到与Mac App Store类似的问题时,这就是我所做的:

  1. 重新生成应用程序的分发和开发证书(从Apple开发人员证书网站)。
  2. 下载这两个证书并将它们拖到Xcode的图标(不知道是否有任何影响,但提交失败后,我很迷信)。
  3. 重新刷新Xcode的证书和身份。
    1. 打开Xcode的首选项。
    2. 转到帐户标签。
    3. 点击我的帐户
    4. 点击刷新button。
  4. 生成档案。
  5. 提交应用程序,并在向导提示中的某个地方点击“刷新签名身份”。

作为参考,这里是我build立的有关签名的设置。 最后一次我提交了应用程序(过去两天一直处于“等待审查”状态,所以我猜测它通过了所有的自动化testing)。

构建设置 - 签名

您的问题与签名有关,因为您的应用没有使用最近的分发证书进行签名。 检查以下步骤:

1)检查您的bundle identifier以列出供应configuration文件,如下图所示。 因为这也导致了这个问题。

在这里输入图像说明

2)在构build应用程序时,您可能不会使用correct certificates 。 只需在Provisioning Portal中删除您的证书,然后创build新证书并在Xcode中进行更新即可。

3)从您的图片中, 您没有select正确的configuration文件 。 转到组织者/供应configuration文件/刷新,并允许Xcode获取最新的。 看到屏幕截图如何做到这一点。

select正确的供应configuration文件。 在这里输入图像说明

select正确的代码标志。 在这里输入图像说明

4)清理你的项目。

5)只要clean all your targets 。 你甚至可以去/Users/%USERNAME%/Library/Developer/Xcode/DerivedData并删除那里的所有目录。

看到这个参考

在Apple开发人员支持中,有两个额外的常见原因是Invalid Signature二进制拒绝原因,

  1. 包含特殊字符(即非数字和非alpha)的可执行文件。 要解决此问题,请将Xcode目标的产品名称构build设置从“$ {TARGET_NAME}”更改为仅包含字母/数字字符的string。 让我知道如果这是问题的原因(和有问题的字符),因为我提交错误报告来修复我在这里find的每个实例。

  2. 苹果双文件(“双文件”),这是从非HFS +格式的硬盘拷贝未压缩的Xcode项目的结果。 要检查这是否导致你的拒绝:

A.在这里运行应用程序诊断: 如何检查我的应用程序的签名是否已损坏?

B.然后检查命令行输出: 签名validation失败根源列表 。 双文件被诊断为一个消息,如:

 resource missing: my.app/._.* 

C.从文档:

以“._”为前缀的文件被认为是AppleDouble文件,并且可以通过将未压缩的Xcode项目文件夹复制到非HFS +格式的磁盘上而产生。 必须使用'dot_clean'命令删除AppleDouble文件。 Xcode项目文件夹是dot_clean的参数,如下所示。 注意:您可以将您的Xcode项目文件夹从Finder拖到“terminal”窗口中,以自动将其path填充到命令中。

  dot_clean /path/to/My_Xcode_Project 

(如果terminal找不到dot_clean实用程序,请通过Xcode> Preferences> Downloads下载可选的命令行工具)

D.在Xcode项目上运行dot_clean后,创build一个新的应用程序存档(通过Xcode>产品>存档),重新尝试提交。

为防止出现重复文件,请确保在使用Finder将Xcode项目文件夹压缩到.zip之后,将其传送到非HFS +格式的硬盘。

  1. 在“代码签名身份”下确保您已经为“发布”计划select了分发证书

  2. 在“供应configuration文件”下,请确保您select了分配供应configuration文件(而不是特设备configuration文件)

  3. 存档和分发,确保提交时select相同的证书(inputiTunesConnect信息后)

做完以上所有的事情之后

菜单栏尝试产品 – >存档

然后从组织中尝试辞职和提交。

窗口 – >组织者select档案,然后按发布(但我敢肯定,你会知道这是如何工作的)

很显然,如果你不能这样做,那么你的签名证书确实有问题,更确切地说,你的包标识符可能是罪魁祸首。

另外一个select是你的应用程序使用你尚未在developer.apple.com/ios上设置的服务,例如游戏中心,推送通知等。祝好运

检查你的启动图像。 他们是相冲突的,就像2个图像有相同的名字。 因为我在10分钟内得到了类似的问题。

为了解决这个问题,我创build了一个新的Xcode项目,并将所有内容复制并粘贴到新项目中。