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

时间:2014-01-29 00:55:32

标签: ios xcode app-store updates code-signing

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

  

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

     

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

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

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

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

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

screenshot of code signing

8 个答案:

答案 0 :(得分:2)

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

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

enter image description here

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

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

选择正确的配置文件。 enter image description here

选择正确的代码符号。 enter image description here

4)清理你的项目。

5)只需clean all your targets。您甚至可以转到/Users/%USERNAME%/Library/Developer/Xcode/DerivedData并删除其中的所有目录。

see this ref

答案 1 :(得分:2)

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

  1. 重新生成应用程序的分发和开发证书(来自Apple Developer'证书站点)。
  2. 下载这两个证书并将它们拖到Xcode的图标中(不确定它是否有任何影响,但在提交失败后,我很迷信)。
  3. 从Xcode重新刷新证书和身份。
    1. 打开Xcode的首选项。
    2. 转到“帐户”标签。
    3. 点击了我的帐户
    4. 点击刷新按钮。
  4. 生成存档。
  5. 提交应用并点击"刷新签名身份"在向导中途的某处提示。
  6. 作为参考,这是我与签名相关的构建设置。我最后一次提交应用程序(已经在#34;等待审核"现在过去两天的状态,因此我猜它通过了所有的自动化测试)。

    Build settings - signing

答案 2 :(得分:2)

在Apple开发者支持中,Invalid Signature二元拒绝原因还有两个常见原因,

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

  2. Apple Double Files(“双文件”),它是将Xcode项目复制到非HFS +格式化硬盘驱动器上或从非HFS +格式化硬盘驱动器复制的。检查这是否导致您的拒绝:

  3. 一个。在此处运行应用诊断:How do I check if my application's signature has been corrupted?

    B中。然后使用以下命令检查命令行输出:List of Signature Verification Failure Root Causes。双文件被诊断为以下消息:

    resource missing: my.app/._.*
    

    ℃。来自文档:

      

    前缀为“._”的文件被认为是AppleDouble文件   将未压缩的Xcode项目文件夹复制到一个   非HFS +格式化磁盘。必须使用删除AppleDouble文件   'dot_clean'命令。 Xcode项目文件夹是参数   dot_clean如下图所示。注意:您可以拖动Xcode项目   文件夹从Finder进入终端窗口以自动填充它   进入命令的路径。

            dot_clean /path/to/My_Xcode_Project
    

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

    d。在Xcode项目上运行dot_clean后,创建一个新的应用档案(通过Xcode> Product> Archive),重新提交提交。

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

答案 3 :(得分:1)

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

  2. 在“配置文件”下,确保选择分发配置文件(不是特设)

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

答案 4 :(得分:0)

完成上述所有操作后

菜单栏 尝试产品 - >存档

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

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

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

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

ls -1 -R -i | grep -a“ [^ A-Za-z0-9 _。':@ /-]”

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