无效的二进制或无效的快速支持

时间:2015-01-18 14:59:43

标签: objective-c xcode swift

在我将应用程序发送到应用程序商店以获得批准后,我在iTunes Connect中收到“无效二进制文件”消息。然后,我在Apple的电子邮件中收到以下消息:

无效的Swift支持 - 该包包含无效的Swift实现。该应用程序可能已使用不合规或预发布工具构建或签名。访问developer.apple.com获取更多信息。

我的应用只是一个简单的游戏应用程序。没有调用外部程序。我已经研究了这条消息,并检查了以下内容:

  1. xcode是最新的 - 在应用商店中检查
  2. EMBEDDED_CONTENT_CONTAINS_SWIFT为YES或NO
  3. 使用xcode app发送,而不是使用应用程序加载器
  4. 没有使用命令行构建
  5. (Xcode菜单 - >偏好设置 - >地理位置标签 - 确认命令行工具与Xcode版本匹配。
  6. “清理”应用程序,重建并重新归档,然后重新发送,同样的消息
  7. 该应用程序通过组织者确认
  8. 查看存档的内容显示了SwiftSupport文件夹
  9. 我只使用一个开发者帐户,并且从未登录过任何其他开发者帐户 我在网上找不到任何有助于解决这个问题的方法。
  10. 我正在运行OS X Yosemite 10.10.1。
  11. xcode版本是6.1.1版本6A2008a - 使用此版本构建,清理和发送
  12. 我也按下了Option键和“Cleaned Build Folder”并重新发送了相同的消息
  13. 我在网上或任何论坛都找不到任何其他原因。任何帮助是极大的赞赏。谢谢你的时间。






    我找到的解决方案

    编辑:

    (1)

    您联系Apple并且等待很长时间...重置iTunes连接,因为这个问题来自Apple。 (Apple要求发送此问题的日志)

    (2)

    另一个解决方案,你在iTunes上创建另一个项目应用程序连接并上传你的工作,这个解决方案工作正常,对我来说是解决方案。

    (3)

    另一个解决方案是,您在Xcode上创建一个新项目,将项目复制并粘贴到另一个项目中....(创建新的配置文件等...)并将您的工作上传到Itunes Connect上的同一项目应用程序中。

    (4)

    步骤(2)+步骤(3),在Xcode和Itunes Connect中创建一个新项目。

    (5)

    创建一个具有相同名称包标识符的新项目,它完美无缺!






5 个答案:

答案 0 :(得分:2)

请参阅:Technical Q&A QA1881在Objective-C中使用Swift嵌入内容。

您似乎只需要将EMBEDDED_CONTENT_CONTAINS_SWIFT设置为YES“如果您正在构建一个不使用Swift但是嵌入内容的应用程序,那么”。

您的应用编写的语言是什么?如果Swift哟不需要EMBEDDED_CONTENT_CONTAINS_SWIFT。

答案 1 :(得分:2)

前几天我遇到了这个问题。做了一些事,但我终于找到了问题(至少对我来说)。我在网上看到的一切都说这个问题与这个设置有关:

EMBEDDED_CONTENT_CONTAINS_SWIFT

当这开始失败时,我将此设置为NO。所以我尝试将其设置为YES,但由于同样的原因,它仍然失败了。 GUI不允许我删除此设置,我只能在YES和NO之间进行更改。

对于它的价值,我的代码没有EMBEDDED代码,它只是直接上传SWIFT。

无论如何,所以我决定卸载XCode并重新下载,希望这会有所帮助。

在下载XCode时,我启动了Beyond Compare,并将我当前的项目与上周的备份进行了比较,以了解可能发生的变化。

Beyond Compare发现Projectname.xcodeproj文件内部的文件已更改...一个名为project.pbxproj文件的文件。

在这里,就是那条线:

EMBEDDED_CONTENT_CONTAINS_SWIFT = NO;

这出现在我项目的当前版本中(失败)。有趣的是,在一周前的旧备份版本中,此行并不存在。我知道我没有设置这个标志。在Xcode中肯定有一些东西在幕后做了。

无论如何,有了这些知识,Xcode完成了下载,我重新安装了。启动它,打开我的项目,神奇地,Xcode从.pbxproj文件中删除该行,现在我的项目成功上传到itunesConnect。

BottomLine:xcode中存在一个错误,它可能会无缘无故地将此行添加到您的项目中,从而使您的项目无效。

解决方案:自己编辑pbxproj文件并删除该行可能会有效......但是重新安装XCode似乎可以清除它所带来的任何混淆,并将其删除。

答案 2 :(得分:2)

如果您要提交具有AppleWatch扩展程序的应用程序,如果您尝试使用Application Loader实用程序和zip文件提交应用程序,则会出现此错误。我收到了错误:

该包包含无效的Swift实现。 该包包含一个无效的WatchKit实现。

我经历了第一个错误的每个解决方案 - 但它是通过Xcode提交修复它。

答案 3 :(得分:1)

"检查您的代码签名。我在自动签名时遇到此错误。我将我的dev配置文件用于发布版本的开发和生产配置文件,错误消失了。" Link for the Quote

有时这种情况会无意中发生。

答案 4 :(得分:1)

为了安全起见,应该使用相同版本的Xcode和Swift编译器构建应用程序的所有组件,以确保它们协同工作。

我认为你需要做一个pod清理和安装。我估计你的一个swift pod是在一个旧版本的Xcode上创建的,你更新了Xcode,然后尝试向app store提交。

阅读关于binary compatibility and frameworks

的apple swift博客

您还需要指定嵌入内容在构建设置中包含swift:

EMBEDDED_CONTENT_CONTAINS_SWIFT
  

启用此设置以指示嵌入在目标产品中的内容包含Swift代码,以便标准Swift库可以包含在产品中。