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

问题描述 投票:3回答:8

我正在尝试向iOS应用商店提交更新。我将从Buzztouch应用程序转到Sprite Kit应用程序。我能够存档Xcode项目并提交它。该应用程序进入上传已接收状态,但大约一分钟后,它会更改为无效二进制文件,我收到一封电子邮件说:

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

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

我已经清理了构建目录,重建了我的发布目标,并多次创建了新的配置文件。所有代码签名标识都设置为iOS Developer。代码签名和配置文件对我来说总是有点混乱,我本可以犯一些明显的错误。

我试过提交超过50次!我发现这非常令人沮丧,因为我已经通过电子邮件发送给Apple,他们又回复了我,但它只是一个指向开发中心的链接,其中包含代码签名信息。我也花了很多时间在互联网上寻找解决方案,并且没有一个真正适用于这个问题的好解决方案。

我唯一能想到的是因为我正在改变Buzztouch应用程序或它是Sprite Kit。

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

ios xcode app-store updates code-signing
8个回答
2
投票

这是我在Mac App Store遇到类似问题时所做的事情:

  1. 重新生成应用程序的分发和开发证书(来自Apple Developer's Certificates站点)。
  2. 下载两个证书并将它们拖到Xcode的图标(不确定它是否有任何影响,但在提交失败后,我很迷信)。
  3. 从Xcode重新刷新证书和身份。 打开Xcode的首选项。 转到帐户标签。 点击了我的帐户 单击刷新按钮。
  4. 生成存档。
  5. 提交应用程序并在向导提示中间的某处单击“刷新签名身份”。

作为参考,这是我与签名相关的构建设置。我最近一次提交应用程序(过去两天一直处于“等待审核”状态),这个工作就开始了,所以我猜它通过了所有的自动化测试。


2
投票

您的问题与签名失败有关,因为您的应用未与最近的分发证书签名。请检查以下步骤:

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

2)在构建应用程序时,您可能不会使用correct certificates。只需在Provisioning Portal中删除您的证书并创建新证书并在Xcode中更新它们。

3)从您的图片中,您没有选择正确的配置文件。转到管理器/供应配置文件/刷新并允许Xcode获取最新的。看屏幕截图如何做到这一点。

选择正确的配置文件。

选择正确的代码符号。

4)清理你的项目。

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

see this ref


2
投票

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

  1. 包含特殊字符的可执行文件(即非数字和非字母)。要解决此问题,请将Xcode目标的产品名称构建设置从“$ {TARGET_NAME}”更改为仅包含字母/数字字符的字符串。让我知道这是否是问题的原因(以及有问题的字符),因为我提交错误报告来修复我在这里找到的每个实例。
  2. Apple Double Files(“双文件”)是将Xcode项目复制到非HFS +格式的硬盘驱动器上或从中复制的。要检查这是否导致您的拒绝:

A.在此处运行app诊断: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 +格式化的磁盘上。必须使用'dot_clean'命令删除AppleDouble文件。 Xcode项目文件夹是dot_clean的参数,如下所示。注意:您可以将Xcode项目文件夹从Finder拖到终端窗口中,以自动将其路径填入命令。

        dot_clean /path/to/My_Xcode_Project

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

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

要防止双重文件,请务必使用Finder将Xcode项目文件夹压缩为.zip,然后再将其传输到非HFS +格式的硬盘驱动器。


1
投票
  1. 在“代码签名身份”下确保您已为“发布”方案选择了分发证书
  2. 在“配置配置文件”下,确保选择配置配置文件(不是特设配置文件)
  3. 存档和分发,确保在提交时选择相同的证书(在输入iTunesConnect信息后)

0
投票

完成以上所有操作后

菜单栏尝试产品 - >存档

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

窗口 - >管理器选择存档,然后按分发(但我很确定你会知道它是如何工作的)

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

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


0
投票

检查你的发布图像。他们是否有冲突,就像2张图片有相同的名字一样。因为我有类似的问题,我在10分钟内解决了这个问题。


0
投票

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


0
投票

在我的情况下问题是文件名中没有ASCII字符(有人确实发送给我们嵌入),解决方案是在项目中进行全局搜索:

LS -R -1 S | “”“”“”“”“”“”“”“”“”

并从文件名中删除这些字符。

© www.soinside.com 2019 - 2024. All rights reserved.