【问题标题】:Apple iTunes Connect App submission errorApple iTunes Connect App 提交错误
【发布时间】:2014-09-10 11:50:50
【问题描述】:

Apple iTunes 提交错误:由于以下错误,此时无法处理应用程序:捆绑“xyz.app”缺少捆绑可执行文件。

证书和简介:已检查

【问题讨论】:

  • 这是 Apple 的新功能(耶!)我在提交之前成功提交的二进制文件时遇到了这个错误。也就是说,在 2014 年 8 月 28 日验证没有错误的二进制文件现在在 2014 年 9 月 10 日失败并出现此错误。
  • 这表明苹果正在更新他们的系统。我使用最新的xcode版本上传构建和BANNG..提交成功。

标签: ios iphone


【解决方案1】:

这很可能是由于使用了“假框架”(来自https://github.com/kstenerud/iOS-Universal-Framework 的框架或此设计的变体)。一些库和包将它们的资源捆绑在一起作为一个“框架”,以使宿主项目更容易包含标题、笔尖、图像和可本地化的字符串。然而,这些框架实际上是一个变种包,不符合 Apple 现在强制执行的定义/结构,因为他们已经添加了 Cocoa Touch 框架。

一些解决方案:

  • 将“假框架”拆分为单独的 .a 二进制文件、资源包和一组标头。我建议使用 Cocoapods 将它们打包,这样任何尝试合并库/捆绑包/标题的人都不必在多个步骤中处理手动包含。您仍然可以将针对设备/模拟器架构的多个 .a 文件合并在一起,以创建通用二进制文件,并且一切正常。
  • 切换到使用 Cocoa Touch 框架(不过,这些似乎只适用于部署目标 8.0)并将二进制文件嵌入到应用程序中。如果你走这条路,你还需要为你的资源制作一个单独的包,因为你的框架现在包含一个二进制文件(因此,将它添加为“资源”包会导致你的应用程序中有多个二进制文件当您打包它时,它将被应用商店拒绝)。有关创建 iOS 资源包的一些信息,请参见此处:http://jaym2503.blogspot.ro/2014/03/how-to-create-resource-bundle-in-ios.html。这种方法还有一些其他细微差别和陷阱(例如,如果您将模拟器/设备二进制文件一起放入框架中,然后嵌入框架,您将被应用商店拒绝,因为您嵌入了包含架构的二进制文件模拟器)。不幸的是,到目前为止,Apple 没有太多关于如何使用这些框架的文档,所以这是一条孤独的道路。

我个人推荐 Cocoapod 路线。

【讨论】:

    【解决方案2】:

    检查您是否正在为arm64 armv7 armv7s 构建

    【讨论】:

    • @Thanks Hannes,是的,当时我正在为 arm64、armv7 和 armv7s 构建。我想这可能是苹果服务器的问题。
    猜你喜欢
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 2015-07-29
    相关资源
    最近更新 更多