【问题标题】:Can't submit the app with storyboard launch images to the App Store: Your binary is not optimized for iPhone 5无法将带有故事板启动图像的应用程序提交到 App Store:您的二进制文件未针对 iPhone 5 进行优化
【发布时间】:2015-01-24 00:11:18
【问题描述】:

我正在尝试将我的第一个应用程序提交到 App Store,但是当我尝试时收到以下错误:

错误 ITMS-9000:“您的二进制文件未针对 iPhone 5 进行优化 - 新 提交的 iPhone 应用和应用更新必须支持 4 英寸显示屏 在 iPhone 5 上,并且必须包含在 UILaunchImage 下的 info.plist 将 UILaunchImageSize 值设置为 {320、568}。启动图像必须是 PNG 文件并且位于 您的捆绑包的顶级,或者在每个 .lproj 文件夹中提供,如果您 本地化您的启动图像。

我正在使用 SDK 8.1。部署目标是 8.0。启动图像由情节提要启动屏幕文件设置。没有过时的启动屏幕图像,我不打算添加它们,因为目标系统是 iOS 8+。

怎么了? Xcode 版本 6.1 (6A1052d)。

【问题讨论】:

  • 在模拟器或设备上进行测试时,您能观察到 iPhone 5 或 iPhone 6 或 iPhone 6+ 的原生分辨率吗?
  • 是的,在模拟器和设备上一切正常。

标签: xcode ios8 storyboard xcode6 launchimage


【解决方案1】:

您的应用是否支持 iOS7 或更早版本?这就是问题所在。在这种情况下,您必须将初始屏幕作为 iOS7 的 PNG 文件提供。

LaunchScreen.xib 或 LaunchScreen.storyboard 仅适用于 iOS8 及更高版本。

更多信息在这里:http://oleb.net/blog/2014/08/replacing-launch-images-with-storyboards/

在 iOS 8 中,您现在可以提供一个 Interface Builder 文档,并且在 运行时,让操作系统为 你。

【讨论】:

  • 这是我正在寻找的确切答案。我的应用程序的第一个版本只支持 IOS8,所以我没有启动图像。现在想支持IOS7,遇到这个问题....谢谢。
  • 这就是答案,人们应该把这个答案当作正确的答案
  • 截至今天,React Native 已选择 7.0 作为其部署目标。没注意,还很生气。谢谢!
  • 顶一下,伙计.. 非常感谢
【解决方案2】:

在生气 2 天后,这对我有用:

  1. 将部署目标设置为 7.0
  2. 添加尺寸为 320x568 的新启动图像并将其命名为 Default-568h.png
  3. 在您的 Info.plist 文件中添加以下代码。
<key>UILaunchImages</key>
    <array>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>7.0</string>
            <key>UILaunchImageName</key>
            <string>Default-568h</string>
            <key>UILaunchImageOrientation</key>
            <string>Portrait</string>
            <key>UILaunchImageSize</key>
            <string>{320, 568}</string>
        </dict>
    </array>

思考要点

  • 我的应用程序完全处于横向模式,但我必须使用上面给出的这个纵向大小的图像。
  • 我必须使用 320x568 大小,即 (1x),尽管我项目中的所有其他资源都是基于视网膜的,即 (2x)
  • 还有一件事:我没有将资产目录用于启动图像。我通过我的代码使用了自定义的启动画面序列,但我仍然必须按照上述步骤来解决这个错误。

截图

【讨论】:

  • 是的,我必须将所有 iPhone 启动图像向左旋转并指定纵向作为方向,尽管整个应用程序是横向的。以前,它只是一个 iPad 应用程序,并且仅适用于横向启动图像。
【解决方案3】:

将故事板启动屏幕文件重命名为“LaunchScreen.storyboard”。

如果您使用 File -> New -> File 创建新的 Launch Screen 文件,Xcode 将默认名称为“Launch Screen.storyboard”。

但是,创建新项目时在 Info.plist 中指定的默认名称是“LaunchScreen.storyboard”,没有空格。

【讨论】:

  • 这不是必需的。 Apple 支持 .storyboard 和 .xib。
  • 这个!几天来我一直在努力解决这个问题,而正是这个问题解决了这个问题。太棒了!
  • 我遇到了这个确切的问题。 Apple 一直在 info.plist 中拒绝带有“启动屏幕”的二进制文件。没有空格的重命名解决了它。
  • 请注意,根据 Apple 的更新,从 2020 年 4 月开始,提交到 App Store 的应用程序必须使用 Xcode 故事板提供应用程序的启动屏幕 (developer.apple.com/news/?id=01132020b)
【解决方案4】:

当我使用启动屏幕 xib 文件尝试提交时,我遇到了同样的错误。我拥有正确尺寸的所有正确图像资产,但仍然没有。

我发现this post 的一个小伙子遇到了同样的问题,最终使用了错误中指示的 568x320 文件。我尝试了同样的方法,但这对我不起作用。

最后,由于我的应用程序仅适用于iOS8,因此我使用了一个xib文件并且应用程序提交成功。

【讨论】:

    【解决方案5】:

    出现此问题是因为您未正确添加大小为 640x1136 (iphone 5) 的启动图像。

    编辑完下面的Contents.json,就可以正常上传到iTunesConnect了

    {
      "images" : [
    {
      "orientation" : "portrait",
      "idiom" : "iphone",
      "filename" : "splash-480h.png",
      "extent" : "full-screen",
      "scale" : "1x"
    },
    {
      "orientation" : "portrait",
      "idiom" : "iphone",
      "filename" : "splash-480h@2x.png",
      "extent" : "full-screen",
      "scale" : "2x"
    },
    {
      "orientation" : "portrait",
      "idiom" : "iphone",
      "filename" : "splash-568h@2x.png",
      "extent" : "full-screen",
      "subtype" : "retina4",
      "scale" : "2x"
    },
    {
      "extent" : "full-screen",
      "idiom" : "iphone",
      "subtype" : "736h",
      "filename" : "splash-736h@3x.png",
      "minimum-system-version" : "8.0",
      "orientation" : "portrait",
      "scale" : "3x"
    },
    {
      "extent" : "full-screen",
      "idiom" : "iphone",
      "subtype" : "736h",
      "filename" : "splash-landscape-736h@3x.png",
      "minimum-system-version" : "8.0",
      "orientation" : "landscape",
      "scale" : "3x"
    },
    {
      "extent" : "full-screen",
      "idiom" : "iphone",
      "subtype" : "667h",
      "filename" : "splash-667h@2x.png",
      "minimum-system-version" : "8.0",
      "orientation" : "portrait",
      "scale" : "2x"
    },
    {
      "orientation" : "portrait",
      "idiom" : "iphone",
      "extent" : "full-screen",
      "filename" : "splash-480h@2x.png",
      "minimum-system-version" : "7.0",
      "scale" : "2x"
    },
    {
      "extent" : "full-screen",
      "idiom" : "iphone",
      "subtype" : "retina4",
      "filename" : "splash-568h@2x.png",
      "minimum-system-version" : "7.0",
      "orientation" : "portrait",
      "scale" : "2x"
    }
       ],
      "info" : {
    "version" : 1,
    "author" : "xcode"
      }
    }
    

    【讨论】:

      【解决方案6】:

      如果你提到https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/LaunchImages.html,它说 iPhone 6(plus) 需要启动 XIB 或故事板文件。

      如果你看看这里 https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconMatrix.html#//apple_ref/doc/uid/TP40006556-CH27-SW2 它指的是图像大小,从未明确表示 iPhone 5 可以处理启动文件(我知道它也没有说它不能)。至少 iPhone 4s 看起来没有,所以我猜 iPhone 5 也没有,你必须添加一个静态文件。

      【讨论】:

      • @Altaveron 其实这很好听。所以你的意思是它只取决于启动故事板的名称?
      【解决方案7】:

      对于这里丢失的 Xamarin 灵魂,我通过在 Resources 文件夹下使用名为 Images.xcassets 的图像 xcassets 遇到了这个问题。

      我从头开始创建它,将它命名为 Media.xcassets,因为它来自默认,并且在根文件夹下,而不是 Resources。它有效。 :/

      【讨论】:

        【解决方案8】:

        我用的是React Native,添加react-native-splash-screen插件后出现这个问题

        但是,通过此链接遵循该方法后,我得到了解决方案

        Your binary is not optimized for iPhone 5

        当我这样做时问题已经解决了:

        1. 我已经完全删除了 laungh 图像的 xcassets
        2. 添加了启动图像集
        3. 并再次添加了所有启动图像
        4. 又创建了一个新的ipa

        这次提交成功了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-03-10
          • 2015-05-03
          • 2014-12-10
          • 1970-01-01
          • 1970-01-01
          • 2023-03-24
          相关资源
          最近更新 更多