在我将应用程序发送到应用程序商店以获得批准后,我在iTunes Connect中收到“无效二进制文件”消息。然后,我在Apple的电子邮件中收到以下消息:
我的应用只是一个简单的游戏应用程序。没有调用外部程序。我已经研究了这条消息,并检查了以下内容:
我在网上或任何论坛都找不到任何其他原因。任何帮助是极大的赞赏。谢谢你的时间。
您联系Apple并且等待很长时间...重置iTunes连接,因为这个问题来自Apple。 (Apple要求发送此问题的日志)
另一个解决方案,你在iTunes上创建另一个项目应用程序连接并上传你的工作,这个解决方案工作正常,对我来说是解决方案。
另一个解决方案是,您在Xcode上创建一个新项目,将项目复制并粘贴到另一个项目中....(创建新的配置文件等...)并将您的工作上传到Itunes Connect上的同一项目应用程序中。
步骤(2)+步骤(3),在Xcode和Itunes Connect中创建一个新项目。
创建一个具有相同名称包标识符的新项目,它完美无缺!
答案 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库可以包含在产品中。