应用提交: 无效二进制文件 - 无效签名

5
我正在尝试更新iOS应用商店,从Buzztouch应用转换成Sprite Kit应用。我能够归档Xcode项目并提交它。应用程序达到了上传接收的状态,但一分钟后会变为“无效的二进制文件”,并收到以下电子邮件:
“无效签名-确保您已使用分发证书签名应用程序,而不是特定于广告或开发的证书。验证在Xcode中目标级别上的代码签名设置是否正确(这将覆盖项目级别上的任何值)。此外,请确保您正在上传的包是使用Xcode中的发布目标构建的,而不是模拟器目标。如果您确定您的代码签名设置正确,请在Xcode中选择“全部清除”,删除Finder中的“build”目录,并重建您的发布目标。”
“解决这些问题后,转到版本详细信息页面,单击“准备好上传二进制文件”。继续完成提交过程,直到应用状态为“等待上传”。然后,您可以交付修正后的二进制文件。”
我已经多次清理了build目录,重新构建了我的发布目标,并创建了新的配置文件。所有的代码签名标识都设置为iOS开发人员。代码签名和配套配置文件对我来说一直有点困惑,可能犯了一些明显的错误。
我已经尝试提交50多次!我感到非常沮丧,因为我给苹果发了电子邮件,他们回复了我,但只是一个链接,里面有代码签名信息。我也花了很多时间在互联网上搜索解决方法,但没有一个真正解决这个问题的好方法。
我唯一能想到的可能是因为我正在从Buzztouch应用程序或Sprite Kit进行更改。
这是我的代码签名截图:

screenshot of code signing


你的代码签名有误。你需要使用 iOS Distribution 来发布你想要发布的模式。 - borrrden
我在 Mac App Store 遇到了类似的问题。有什么解决方案吗? - adib
你好 @adib,我实际上还没有找到解决方案,因此我没有向任何人授予赏金,因为没有一个解决方案有效。 :) 你有什么建议吗?我认为这种类型的问题每个解决方案都是独特的,所以你可以尝试本页列出的任何方法,但对我来说都不起作用。 - PoKoBros
@PoKoBros 我所做的是重新生成证书并在提交之前刷新签名标识。 - adib
@adib,这个方法对你有用吗?因为我已经尝试了很多次,但仍然没有成功。你能否发布一下你签署应用程序的截图?就像我在问题中的那样。这真的很令人沮丧。 - PoKoBros
显示剩余7条评论
8个回答

3
在Apple的开发者支持中,有两个额外常见的导致二进制拒绝的原因是:Invalid Signature
  1. 可执行文件包含特殊字符(即非数字和非字母)。要解决此问题,请将Xcode目标的产品名称生成设置从“$ {TARGET_NAME}”更改为仅包含字母/数字字符的字符串。如果这是问题的原因(以及引起问题的字符),请告诉我,因为我会在此处找到每个实例并提交错误报告。

  2. 由于将未压缩的Xcode项目复制到/从非HFS +格式的硬盘上而导致的Apple双重文件(“双份文件”)。要检查是否导致您的拒绝:

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

B. 然后使用以下命令行输出进行检查: 签名验证失败根本原因列表。双重文件的诊断信息如下:

resource missing: my.app/._.*

C. 来自文档:

文件名以“._”开头的文件被认为是AppleDouble文件,它可能是将未压缩的Xcode项目文件夹复制到非HFS+格式的磁盘上导致的。必须使用“dot_clean”命令删除AppleDouble文件。如下所示,Xcode项目文件夹是dot_clean的参数。注意:您可以将Xcode项目文件夹从Finder拖动到终端窗口中,以自动填充其路径到命令中。

        dot_clean /path/to/My_Xcode_Project

如果终端找不到dot_clean实用程序,请通过Xcode>首选项>下载下载可选的命令行工具。
在对Xcode项目运行dot_clean后,创建一个新的应用程序存档(通过Xcode>产品>存档),然后重新尝试提交。
为了防止重复文件,请确保在将Xcode项目文件夹传输到/从非HFS+格式的硬盘驱动器之前,使用Finder将其压缩为.zip文件。

我认为问题出在No2上。我尝试从外部NTFS硬盘上传文件,但当将项目复制到Mac硬盘时,一切都正常通过了。 - Dimmy3
No1 是导致我的问题的原因。我在产品名称中使用了“?”字符。 - poordeveloper

2
这是我在 Mac 应用商店遇到类似问题时所做的:
  1. 重新生成应用程序的分发和开发证书(从 Apple 开发人员证书网站)。
  2. 下载两个证书并将它们拖到 Xcode 的图标上(不确定是否有影响,但经过多次提交失败后,我变得相当迷信)。
  3. 从 Xcode 中刷新证书和身份。
    1. 打开 Xcode 的首选项。
    2. 转到帐户标签。
    3. 点击我的帐户
    4. 点击刷新按钮。
  4. 生成归档文件。
  5. 在向导提示的中途点击“刷新签名身份”并提交应用程序。
以下是与签名有关的我的构建设置,此设置在上一次提交应用程序时有效(现在我的应用程序已进入“等待审核”的状态两天了,因此我想它通过了他们的所有自动化测试)。

Build settings - signing


1
我非常不满意苹果的错误邮件是误导性的。这浪费了我很多时间!非常感谢你的解决方案!! - Takide

2
您的问题与签名失败有关,因为您的应用程序未使用最新的分发证书进行签名。请按照以下步骤检查:
1)检查您的包标识符(bundle identifier),以列出如下图所示的配置文件。这也可能导致此问题。

enter image description here

2) 当构建您的应用程序时,您可能没有使用正确的证书。只需在 Provisioning Portal 中删除您的证书并创建新的证书,并在 Xcode 中更新它们即可。
3) 根据您的图片,您没有选择正确的配置文件。前往“组织者/配置文件/刷新”并允许 Xcode 获取最新的配置文件。如何执行请参见屏幕截图。
选择正确的配置文件。 enter image description here 选择正确的代码签名。 enter image description here 4) 清理您的项目。
5) 只需清除所有目标。您甚至可以转到“/Users/%USERNAME%/Library/Developer/Xcode/DerivedData”并删除其中的所有目录。 请参阅此参考

你在添加新证书之前是否删除了旧证书? - Mani

1
  1. 在“代码签名标识”下,确保您已为“发布”方案选择了您的分发证书

  2. 在“配置文件”下,确保您选择了一个分发配置文件(而不是Ad Hoc配置文件)

  3. 归档和分发时,请确保在提交时选择相同的证书(输入iTunesConnect信息后)


0
在我的情况下,问题是文件名中没有ASCII字符(有人发送给我们嵌入的),解决方案是在项目中进行全局搜索: ls -1 -R -i | grep -a "[^A-Za-z0-9_.':@ /-]"
然后从文件名中删除这些字符。

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

0

完成以上步骤后

菜单栏 尝试选择产品->归档

然后从组织中尝试重新签名并提交。

窗口->组织者 选择存档,然后按分发(但我相信你知道如何操作)

显然,如果您无法执行此操作,则很有可能您的签名证书存在问题,更具体地说,您的捆绑标识符可能是罪魁祸首。

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


0

检查你的启动图片。它们是否冲突,比如两个图片有相同的名称。因为我曾经遇到过类似的问题,我用了不到10分钟就解决了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接