【问题标题】:"Your binary is not optimized for iPhone 5" after I upload an app with xcode 6.0.1在我使用 xcode 6.0.1 上传应用程序后,“您的二进制文件未针对 iPhone 5 进行优化”
【发布时间】:2014-11-28 17:58:54
【问题描述】:

在使用 Xcode 版本 6.0.1 (6A317) 上传我的二进制文件后,我收到了这封电子邮件

您的二进制文件未针对 iPhone 5 进行优化 - - 新的 iPhone 应用程序和应用程序 提交的更新必须支持 iPhone 5 上的 4 英寸显示屏,并且必须 包括 Info.plist 中引用的启动图像 UILaunchImages 的 UILaunchImageSize 值设置为 {320, 568}。 启动图像必须是 PNG 文件,并且位于您的顶层 捆绑包,或者在每个 .lproj 文件夹中提供,如果您本地化您的 发射图像。了解有关 iPhone 5 支持和应用启动图片的更多信息 通过查看“iOS 人机界面指南” 'https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconsImages/IconsImages.html#//apple_ref/doc/uid/TP40006556-CH14-SW5' 和“iOS 应用程序编程指南” 'https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/App-RelatedResources/App-RelatedResources.html#//apple_ref/doc/uid/TP40007072-CH6-SW12'。

这是我的 plist 文件:

这是我的 Xcode 树:

这是我的包根树:

这是我能找到的关于此问题的唯一资源,但仍未得到答复(3 天前)...https://devforums.apple.com/message/1051948#1051948

【问题讨论】:

  • 您能为此选择一个答案吗? @Charlie Hung 的解决方案对我有用。

标签: xcode localization app-store-connect


【解决方案1】:

我们遇到了同样的问题,尝试了很多解决方案都无法解决,我们认为这是应用提交中的一种错误。 但是我们找到了一种解决方法,可以保持启动图像本地化并通过提交验证。

环境:

Xcode 6.1 (6A1052c) 与 iOS 8.1 SDK

前提条件:

在“*-info.plist”文件中有以下属性。

步骤:

  1. 转到您的目标设置并在我们的标准场景中(本地化 启动图像,在“*-info.plist”中使用“UILaunchImages”,但不使用 图片资源),它应该看起来像图片

  2. 更改设置以使用图片资源(注意:在此步骤之后,Xcode 会自动删除您的 *-info.plist 文件中的“UILaunchImages”属性。所以请先备份这些属性。)

  3. 转到“LaunchImage”资源(可以单击右侧的箭头按钮)并填充来自您的 *.lproj 文件夹之一的图像。

  4. 现在,转到包含图像和“Contents.json”文件的“LaunchImage”文件夹。

  5. 删除所有刚刚添加的启动IMAGES,但保留“Contents.json”(及其内容)文件。

  6. 检查“Contents.json”,它应该包含如下图所示的属性

仔细检查以下项目:

  • 资源文件夹(en.lproj、ja.lproj 等)中的本地化启动图像

  • *-info.plist 包含“UILaunchImages”属性

  • 项目设置使用图像资源作为启动图像

  • “LaunchImage”资产文件夹中的“Contents.json”,并且文件夹DOES NOT确实有启动图像

现在您可以尝试本地化启动图像并将二进制文件提交到 iTunes Connect。在我们的应用中,解决方法确实适用于“本地化启动图像”和“提交成功”。

这应该是避免提交检查中的错误的一个技巧。

由于上述解决方法不会改变任何资源,除了让检查认为我们使用图像资产,我们更确信 Apple 的检查中存在一些错误。

干杯!

【讨论】:

  • 实际上,我刚刚尝试了您的解决方案,它确实有效。但是,没必要这么复杂,只需检查两点以使提交成功:1.项目设置使用图像资产作为启动图像,2.“LaunchImage”资产文件夹中的“Contents.json”和文件夹DOES没有像 info.plist 那样的启动图像,你真的不需要在那里检查任何东西,因为如果你完成了上述两个步骤,xcode 将正确编译所有内容
  • 这让我热血沸腾。
  • 所以你说要从你截图的 contents.json 文件中删除启动图像?
  • 这令人困惑。我应该从文件夹中删除图像吗?但它们仍然需要存在,对吧?你把它们放在哪里?随机?所以 info.plist 包含 UILaunchImages 属性,然后我将项目设置为使用图像资产来启动图像。然后我上面说了什么?这让我很生气,因为我认为它不应该被这么奇怪地固定。
  • @CarmenA 本地化的启动图像应该放在本地化资源文件中,如 en.lproj、jp.lproj 等。我认为这也不是一个解决方案。但是为了实现我们的目标,“成功提交”、“本地化启动图像”以及将图像资源用于其他图像,这是我们的解决方法。
【解决方案2】:

这也发生在我身上。由于iOS6(我认为)如果您本地化您的应用程序,您必须始终保持一致。正如我在屏幕截图中看到的那样,您有英语、荷兰语和法语作为语言。在进行本地化的任何地方都必须使用这些语言。您的字符串本地化文件必须包含所有这些语言,但不能包含更多语言。 当我将 AppiRater 库用于应用程序时,我得到了相同的回复。 AppiRater 有多种语言的消息,我的应用程序仅本地化为 2 种语言。所以我不得不从 AppiRater 中删除所有其他字符串文件,除了我需要的 2 个。 一旦我这样做了,一切都很顺利。

所以简短的回答是:删除您不需要支持的任何额外本地化文件,并添加您的应用中缺少的本地化文件。

干杯!

由 danielgindi 编辑

这确实有效,尽管有人声称这个答案是无关紧要的。 当我开始在应用程序中使用 Base 本地化时,我遇到了这种情况,它仍然在 en.lproj 文件夹中本地化了一些资源,包括 Default.pngs。

因此,您可以确保在所有您正在使用的本地化文件夹中拥有Default-568h@2x.png 文件,或者删除您不使用的本地化。 我刚刚把所有东西都移到了Base.lproj,这样一来就很清楚它采用的是什么png,并且没有重复。

【讨论】:

  • 您的回答似乎无关紧要。为什么会相关?如果是这样,如果我使用 Cocoa Pods,如何确保我的本地化保持一致?
  • 不无关系。我遇到了同样的问题,告诉我 png 不兼容,即使它与它无关。我修复了它,就像我在回答中所说的那样。关于 Cocoa Pods 的事情,我不知道该告诉你什么,但你的问题可能与我所说的本地化有关。
  • 其实我可以确认它是相关的。我将编辑答案以使其更清晰。
【解决方案3】:

要更清楚:

  1. 将您的启动图像源更改为“启动图像”(按照@Charlie Hung 回答中的步骤 1-3 进行操作)。

  1. 右键单击您的项目并选择“在 Finder 中显示”
  2. 找到文件夹Assets.xcassets并打开它
  3. 打开 LaunchImage.launchimage 文件夹并将您的两个图像移动到您可以在项目中找到的 .Iproj 文件夹中。 (我的被称为 Base.Iproj)。

最后,将其添加到您的 info.plist(在文本编辑器中打开):

<key>UILaunchImages</key>
  <array>
    <dict>
      <key>UILaunchImageMinimumOSVersion</key>
      <string>7.0</string>
      <key>UILaunchImageName</key>
      <string>iOS7-Default </string>
      <key>UILaunchImageOrientation</key>
      <string>Portrait</string>
      <key>UILaunchImageSize</key>
      <string>{320, 480}</string>
    </dict>
  </array>

这就是我所要做的。

【讨论】:

    【解决方案4】:

    就我而言,我正在更新一个较旧的应用程序。原来我错过了一个名为:launchiPhone5-568h@2x.png 尺寸为 320x568 的图标文件。我通过查看警告发现了这一点。我创建了该文件,并将其与其他图标文件一起添加到我的项目中,并且运行良好。

    希望对某人有所帮助:-)

    【讨论】:

      【解决方案5】:

      按照 Charlie 和 Dan 的建议进行操作,并确保您的图像文件名中没有任何破折号。直到我将文件重命名为仅字母数字时,我的才起作用。

      【讨论】:

        【解决方案6】:

        我遇到了同样的错误,但在我的情况下,我没有启动图像的情节提要 (xib) 文件,这是需要的:

        “您使用启动 XIB 或故事板文件表明您的应用在 iPhone 6 Plus 或 iPhone 6 上运行。” (see here)

        我按照本教程创建它: https://developer.xamarin.com/recipes/ios/general/templates/launchscreen-xib/

        对于教程的第 9 步,在 Info.plist 中,我设置:

        <key>UILaunchImageFile~iphone</key>
        <string>Launch Screen.storyboard</string>
        

        只是为了验证,当您运行应用程序时,您应该会在加载之前看到启动屏幕图像。完成此操作后,我可以将应用上传到应用商店。

        上面在其他答案中显示的步骤也很重要:“如果您还需要支持早期版本的 iOS,除了启动文件之外,您还可以继续提供静态启动图像。” (see here)

        希望这会有所帮助。

        【讨论】:

          【解决方案7】:

          我在部署环境 9.3 和 swift 2.3 中遇到了同样的错误,在我的情况下,我没有启动图像的情节提要 (xib) 文件,这是必需的,并且我的项目目标设置中的配置错误,请参阅图片链接如下:

          Picture of Settings

          【讨论】:

            【解决方案8】:

            也许这对某些人有用:只需将 iOS Deployment Target 从 7.0 更改为 8.1 或更高版本。

            我想上传一个应用到react-native 0.37构建的应用商店时遇到了这个问题,默认iOS Deployment Target是7.0。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-12-10
              • 1970-01-01
              • 1970-01-01
              • 2023-03-24
              • 2014-11-08
              • 2016-04-18
              • 1970-01-01
              相关资源
              最近更新 更多