应用提交失败 – 1个损坏的二进制文件/非公共API使用情况,没有其他详细信息

我一直将我的应用程序提交到App Store进行测试飞行,在构建11之后,我通过Apple的电子邮件收到了失败:

非公共API使用:该应用包含一个或多个损坏的二进制文件。 重建应用程序并重新提交

我没有得到他们的其他细节。 没有方法名称或类或任何东西。

例如,我已经提交了build 15,它实际上是build 11的完全副本(经过了!),版本号为bump,build 15失败。

我相信这是Apple的错误,但除了上面的段落之外我无法certificate它。 构建1-11工作正常,能够上传和分发。

我正在使用Xcode 9.1和9.2,两者都给出了相同的错误。

我也通过DTS联系了Apple,他们说他们无法帮助我。

现在我该怎么做?

我遇到了这个问题。 我使用CommonCrypto作为“假”框架。 我删除了它,并切换到此线程中接受的答案描述的方法 ,并且iTunesConnect接受了我的构建。

使用pod update时,通过XCode获取Swift 4转换警告或在cmd输出中显示“CommonCryptoModule”似乎是一个强有力的指示,无论您是否受此问题的影响。

我们没有启用bitcode的项目于2018年1月26日星期五开始失败。 在这些项目的“构建设置Yes中将“ Enable Bitcode Yes设置为“是”解决了该问题。

经过对此部分的大量调查后,我们终于发现了这个问题的问题:似乎Apple为支持32位和64位的应用程序提供了此错误。

Apple为Mac Appstore提供了这个提醒,但似乎iOS应用程序也受到了影响。

因此,解决此问题的方法是通过删除对ARMV7和ARMV7S的支持或者从构建设置中的Valid Architectures中支持bitcode OR来删除对32位设备的支持。 这意味着您的应用程序仅适用于iPhone 5S及更高版本。 我希望这可以帮助别人。 谢谢!

自周六以来也有同样的问题。 在我们的案例中进行了长时间的反复试验,打开Bitcode并没有奏效。 我的podfile的以下部分是原因:

 post_install do |installer| puts("Set deployment target") installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '10.3' end end end 

删除这个后,它处理没有错误(仍然关闭Bitcode)。 虽然为什么设置部署目标突然导致拒绝,但这真让我感到困惑。

似乎问题已在iTunes Connect后端修复。 建成45后,我们昨天晚上通过了。 试图找出解决所有这些变化问题的方法 – 现在似乎也完成了初始构建。

所以我可以在外面度过三天……

最近从2018年1月26日没有任何通知或公告苹果做了一些改变相关的快速旧代码不再适用于在app-store提交申请。 我根本没有在我的项目中使用CommonCrypto

我也面临这个问题,我在苹果论坛和各种平台上进行了大量搜索和发布有关非公共API使用的问题:该应用程序包含一个或多个损坏的二进制文件。 重建应用程序并重新提交

在得知那种无效二进制拒绝后没有单一的解决方案。 我提到了一些可能最近适用于某些用户的解决方案。

  1. 更新你的cocoa-pods如果你长期使用它包含一些swift框架或类,因为swift 2.0然后只更新你的cocoa-pods,swift 4支持和目标10.0,错误就消失了。
  2. 我正在谈论的用户之一,他从Build设置启用bitcode,该问题解决了他。
  3. 一些用户删除未使用的代码,类和框架直接在代码中使用没有cocoa豆荚问题解决它们。
  4. 对我来说,我在左侧面板中收到警告,如下图所示

在此处输入图像描述

  • 一旦我转换为swift4我得到以下警告:

不推荐在Swift 4模式下使用Swift 3 @objc推理。 请解决已弃用的@objc推理警告,在启用“使用已弃用的Swift 3 @objc推理”日志记录的情况下测试代码,然后通过将“Swift 3 @objc推理”构建设置更改为“默认”为“appname”来禁用推理目标。

  • 为了修复这个警告,我使用了这个答案: 不推荐在Swift 4模式下使用Swift 3 @objc推理?

  • 之后我需要在我使用bridge的objective-c类中使用的swift3类公共方法中添加@objc

  • 我还检查左侧面板中的其他警告还有一些其他依赖性警告,应用程序目标可能也是其他的帮助。

希望这个答案对于一些尚未找到答案但可能有用的用户有用。

我能够为自己解决这个问题,这就是我所做的:

  • Bitcode在我的项目中被禁用并且保持禁用状态
  • 我删除了3个pod,其中一个是CommonCrypto,我忘记了它(其他2个是QRCode和SwiftyJSON)
  • 我还在Build Settings中删除了它们的Linker Flags

我希望有所帮助!

上传第9个版本后,我自己找到了解决方案。

  1. 我在一个桥使用的objective-c源代码中使用了一些swift类。 在构建项目时,您可以看到项目相关的左侧面板警告,并且有一行表示swift 4的更新。
  2. 在转换swift 4后,我得到了更多警告,例如使用@objc将swift 3用于最新的swift 4代码。
  3. 您可以在swift类中查看如何使用@objc检查此链接: 不推荐在Swift 4模式下使用Swift 3 @objc推理?

  4. 然后我更改了未使用的配置文件

然后我上传应用程序,它的工作原理。 如果有人需要帮助,请告诉我

我使用soffes / CommonCrypto和Carthage。 删除CommonCrypto.framework对我有用,请查看此链接如何导入commoncryto框架: http ://ioscake.com/importing-commoncrypto-in-a-swift-framework.html