【问题标题】:XCode v4.2 and Default-568h@2x.png --> "Invalid Binary" Message When Submitting iOS AppXCode v4.2 和 Default-568h@2x.png --> 提交 iOS 应用程序时出现“Invalid Binary”消息
【发布时间】:2013-01-05 09:52:12
【问题描述】:

我花了很多时间试图解决这个问题。当我通过 XCode4.2 提交我的应用程序时,Apple 不断接受我上传的二进制文件,但几分钟后才宣布二进制文件无效。原来是因为我在资源文件夹里放了“Default-568h@2x.png”,试图支持iPhone 5的闪屏,去掉“信箱模式”(上下黑条)……我我使用的是 2006 MacBook Pro,因此无法升级到 Lion OS 或 Xcode4.5。此外,我可以为我的客户构建在 iPhone 5 上运行良好的 AdHoc 版本(填满整个屏幕)。

有谁知道我可以实施一种解决方法来让 Apple 接受我的二进制文件,同时仍然能够支持 iPhone 5 的大屏幕(没有黑色的顶部或底部条)?如果我重命名“Default-568h@2x.png”,我可以让 Apple 接受我的二进制文件,但我会失去与 iPhone5 的兼容性吗?

我在搜索中找到了以下链接,这似乎表明启动图像与iPhone 5的信箱模式无关,可以标记任何名称。然而,我必须承认,当作者开始讨论“视口”和“媒体查询”时,我相当迷茫......

http://www.mobilexweb.com/blog/iphone-5-ios-6-html5-developers

提前感谢您提供的任何帮助!

【问题讨论】:

  • 应该有一些解释为什么苹果认为你的二进制文件是“无效的”。也许您的 iPhone 5 启动图像 png 图像是“交错的”?图标和启动的 PNG 图像必须是“非交错”的。
  • 检查图像大小是否为 640x1136,或者如果您将“Default-568h@2x.jpg”重命名为“Default-568h@2x.png”,也可能是问题所在。
  • 我认为你不会失去与iPhone5 的兼容性。你有没有在iPhone 5 中检查过没有Default-568h@2x.png 的初始屏幕是如何看到的?
  • 您是否尝试在一段时间后更新您的应用程序?我的意思是超过 4/5 个月的时间?我确定图像没有问题,还有其他问题。
  • 在我使用 XCode4.2 创建的 AppStore 构建中包含“Default-568h@2x.png”绝对是问题所在。如果我删除文件或重命名它,iTunes Connect 将不会显示“无效二进制”消息,而是会显示“等待审查”。苹果没有发送后续电子邮件解释原因。我发现以下链接描述了同样的问题:forum.unity3d.com/threads/…> 但是,我正在尝试看看是否有解决方法,这样我就不需要出去更换我的 2006 MacBook Pro...@Jennis

标签: iphone ios xcode ios6 xcode4.2


【解决方案1】:

Apple 已深思熟虑地决定只允许两种类型的应用:

  1. 使用 XCode 4.4 及更早版本构建的应用程序,适用于最高版本 5 的 iOS,包括支持 armv6(iPhone 3G 需要)但不支持 iOS 6 且不支持iPhone 5 的大屏幕。

  2. 使用 XCode 4.5 构建的应用程序,至少为 iOS 4.3 构建,可能支持更大的屏幕 (Default-568h@2x.png),但不支持 4.3 之前的 iOS 并且不支持 armv6 架构(iPhone 3G 需要)。

现在,如果您将所有其他应用上传到 App Store,它们将被拒绝。您的应用被拒绝,因为它包含 Default-568h@2x.png 和以下内容之一:armv6 支持或支持 4.3 之前的 iOS。

如果没有 XCode 4.5,就不可能创建支持更大的 iPhone 5 屏幕并被 Apple 接受的应用程序。

有些人设法构建和上传了同时支持 iPhone 3G 和 iPhone 5 的应用程序。但这非常棘手,需要并行安装至少 XCode 4.5 和一个更早版本。

更新:

如果我没记错的话,支持大屏的关键点是:

  • 发射图片Default-568h@2x.png
  • Base SDK的设置为iOS 6(或更高版本)

如果您在未将 Base SDK 设置为 iOS 6 的情况下添加启动图像,iTunes Connect 将拒绝您的应用:

“无效的启动图像 - 您的应用包含具有大小修饰符的启动图像,该修饰符仅支持使用 iOS 6.0 SDK 或更高版本构建的应用。”

没有 XCode 4.5,您无法选择 iOS 6 作为 Base SDK

【讨论】:

  • 感谢@Codo 的详细回答。您能否指出一些官方文档来解释 Apple 对上述应用分离的立场(使用 XCode4.4 或更早版本构建的应用,以及使用 XCode4.5 或更高版本构建的应用)?
  • 不,我不能给你任何官方文件。它们可能存在。我只是不知道在哪里可以找到它们。在很短的时间内,可以上传带有为旧 iOS 版本构建的 4 英寸启动屏幕的应用程序。但在 9 月 27 日或 28 日,Apple 开始拒绝这些应用程序并显示上述错误消息。事实是(并且可能记录在某处)XCode 4.5 不再支持 armv6 架构,因此不能再为 iPhone 3G 构建应用程序。
【解决方案2】:

我能够按照以下说明在我的 XCode v4.2 上安装 iOS 6.0 SDK: Is it possible to get the iOS 5.1 SDK for Xcode 4.2 on Snow Leopard? 之后,我可以创建一个具有 Apple 可以接受的以下属性的二进制文件。

  • 启动图片 Default-568h@2x.png
  • Base SDK 设置为 iOS 6(或更高版本)

【讨论】:

    【解决方案3】:

    我有一台 2006 年的 Mac mini,运行 Snow Leopard,Xcode 4.2。昨晚(2013 年 5 月 2 日)我的提交也遇到了完全相同的问题。组织者上传了应用程序,并说一切都很好。几分钟之内,下面的电子邮件就通过了。我按照电子邮件的建议做了。然后我仔细检查,三次检查所有设置,重新创建证书/配置文件....仍然无效的二进制文件。

    在开发初期,我能够破解 dmg 以在我的机器上安装 iOS6。我在我的应用程序中输入了Default-568h@2x.png。我在第 5 代 iPod Touch 上测试了临时安装 - 一切正常,但 Apple 不会接受我的应用程序。

    不管怎样,今年我打算买一台新的 Mac。我今晚要去苹果商店买一个。这是来自 Apple 的电子邮件:

    尊敬的开发者,

    我们发现您最近交付的“Gazoodle Colours”存在一个或多个问题。要处理您的交付,必须更正以下问题:

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

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

    问候,

    App Store 团队

    更新:获得了新的 macbook pro,使用最新的 Xcode (4.6.2) 构建了我的应用程序并重新提交了该应用程序。我的应用程序终于处于 Waiting for Review 状态。不确定买一台新电脑能不能解决问题,但这是升级硬件的好借口,它实际上解决了无效二进制问题!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      相关资源
      最近更新 更多