无法将带有故事板启动图片的应用提交到App Store:您的二进制文件未针对iPhone 5进行优化。

28
我正在尝试将我的第一个应用提交到App Store,但是当我尝试提交时,出现了以下错误:

ERROR ITMS-9000: "您的二进制文件未针对iPhone 5进行优化 - 提交的新iPhone应用程序和应用程序更新必须支持iPhone 5上的4英寸显示屏,并且必须在info.plist下引用具有UILaunchImageSize值设置为{320,568}的UILaunchImage的启动图像。启动图像必须是PNG文件,并位于您的包的顶级目录中,或者如果本地化了启动图像,则在每个.lproj文件夹内提供。

我的SDK版本是8.1,部署目标版本是8.0。启动图像通过故事板启动屏幕文件设置。不存在过时的启动屏幕图像,因为目标系统是iOS 8+。
问题出在哪里?Xcode 版本为6.1(6A1052d)。

你能观察到在模拟器或设备上测试时,是否使用了iPhone 5、iPhone 6或iPhone 6+的本机分辨率吗? - bpolat
是的,在模拟器和设备上都没问题。 - Dmitry
8个回答

41

你的应用程序支持iOS7或更早版本吗?这是问题所在。在这种情况下,您必须为iOS7提供PNG文件格式的闪屏界面。

LaunchScreen.xib 或 LaunchScreen.storyboard 仅适用于iOS8及以上版本。

更多信息请参见:http://oleb.net/blog/2014/08/replacing-launch-images-with-storyboards/

iOS 8中,您现在可以提供一个界面生成器文档,在运行时,操作系统会为您生成所有必要的启动图像。


4
这正是我要找的答案。我的应用程序第一个版本只支持IOS8,因此我没有启动图片。现在我想支持IOS7并遇到了这个问题...谢谢。 - Zhenshan Yu
1
这就是答案,大家应该把这个答案视为正确的答案。 - Gabriel Goncalves
截至今天,React Native已将7.0选为其部署目标。我没有注意到这一点,非常生气。谢谢你! - Naoto Ida
点赞,伙计.. 非常感谢 - Kunal Gupta

14

经过两天的折磨,以下是对我有用的方法:

  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),虽然我项目中的每个其他资源都是基于Retina的,即(2x)。
  • 还有一件事:我没有使用资产目录作为启动图像。我正在使用自定义的闪屏序列通过我的代码,但仍然需要遵循以上步骤才能通过此错误。

截图

输入图像说明


是的,我不得不将所有的iPhone启动图像向左旋转并指定为纵向方向,尽管整个应用程序是横向的。以前,它只是一个iPad应用程序,并且仅使用横向启动图像就可以正常工作。 - Peter

10

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

如果您使用文件 -> 新建 -> 文件创建新的启动屏幕文件,则Xcode会默认将名称设置为'Launch Screen.storyboard'。

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


这并非必须的。Apple 支持 .storyboard 和 .xib 两种格式。 - RGML
1
这个!我为这个问题苦苦挣扎了好几天,而正是这个解决了它。太棒了! - jimt
1
我曾经遇到过这个问题。苹果一直在拒绝带有“Launch Screen”信息的二进制文件。将其重命名为没有空格的名称后问题得到解决。 - Brian Teeter
请注意,根据苹果公司的更新,从2020年4月开始,提交到应用商店的应用程序必须使用Xcode故事板来提供应用程序的启动屏幕(https://developer.apple.com/news/?id=01132020b)。 - redHair

1
这个问题的发生是因为您没有正确添加大小为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"
  }
}

1

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

我发现这篇帖子, 一个人有同样的问题,并最终使用了一个568x320的文件,如错误中所示。我尝试了相同的方法,但对我没用。

最终,由于我的应用程序仅适用于iOS8,我使用了一个XIB文件,成功提交了应用程序。


0
对于那些迷失在Xamarin中的灵魂,我曾经遇到过这个问题,原因是我使用了一个名为Images.xcassets的图像资源文件夹,它位于Resources文件夹下。
我从头开始创建了一个名为Media.xcassets的文件夹,并将其放在根目录下而不是Resources文件夹下。这样就解决了问题。:/

0

如果您参考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 实际上这听起来很好。所以你的意思是它只取决于启动故事板的名称? - theguy

0

我正在使用React Native,并在添加react-native-splash-screen插件后遇到了这个问题

然而,我通过按照此链接中的方法进行操作找到了解决方案

您的二进制文件未针对iPhone 5进行优化

当我执行以下操作时,问题得到了解决:

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

这一次成功提交了。


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