【问题标题】:The resulting API analysis is too large when upload app to mac store将应用程序上传到 mac store 时生成的 API 分析过大
【发布时间】:2014-02-11 00:22:33
【问题描述】:

我将把我的第一个 Mac 应用上传到 Apple Store

并修复了图标,类别的所有验证错误...

但在那之后我通过了验证并发出警告:

The resulting API analysis file is too large. We were unable to validate your API usage prior to delivery. This is just an informational message.

我的上传被拒绝,原因是:“无效的二进制文件”
有没有人有这种情况的经验?


更新:这个警告不是拒绝的原因,它可能是应用归档问题。我已成功将我的应用发布到商店。

所以,我们可以放心地忽略它。

【问题讨论】:

  • 你能解决这个问题吗?我有同样的问题,我不知道该怎么办!
  • 也收到了。我无法在任何地方找到准确解释其含义的来源?
  • 我刚刚将我非常小的运输应用程序从 Swift 1.2 升级到 Swift 2 并收到此错误。没有额外的功能。这实际上是他们分析工具的一个缺点。 (这是针对 Xcode 7 中的 iOS 应用程序,而不是 Mac 商店。)
  • 同Ray Fix,不使用任何私有API,只是将代码从Objective-C升级到swift
  • 同上,没有私有API,只是使用Xcode 7,我得到了。

标签: xcode macos


【解决方案1】:

Apple 禁止在 iOS 应用程序中使用私有或未记录的 API。您对与私有或未记录的 API 方法同名的方法进行的任何调用都将被标记为私有 API 使用,即使被调用的方法是您自己定义的。

App Loader 会进行初始扫描,检查方法名称、实例变量访问,甚至是 @selector 与私有方法名称的使用情况。 App Loader 并不总是做得很好,你拥有的源文件越多,它就越有可能给你它生成的 API 分析文件“太大”的警告。

幸运的是,尽管有警告,您仍然可以提交申请。 Apple 会在内部进行检查,如果因为名称重叠而被退回,您将不得不重新进行审核。

Erika Sadun 试图制作一个名为 API Kit 的应用程序来为您进行扫描,但她似乎已经放弃了她的工作,并从她的网站上删除了该应用程序的任何痕迹。

Chimp Studios 创建了App Scanner 来做同样的事情,但它自 2011 年以来就没有更新过。不幸的是,对于大型项目——这包括带有大量来自 CocoaPods 的额外 pod 的项目——没有当前(2014) 解决此问题的好方法,而不是主动命名事物,以免它们与私有 API 方法和实例名称冲突。

您可以主动了解苹果的Cocoa Naming Conventions 并尝试预测。这将减少未来的头痛。然而,在 Apple 引入类似命名空间之类的东西之前,我们可能会时不时地遇到这个问题。

“invalid binary”错误可能有多种原因,但与 App Loader 创建的 API 分析文档完全无关。

您应该知道,即使进行了扫描,仍然有办法绕过禁止使用私有/未记录的 API。 :)

【讨论】:

  • 你是说这个“太大”的错误纯粹是错误标记的错误吗?它总是表示某种无效的 API 使用?您是如何建立这种联系的?
  • 我意识到问题是关于 Mac App Store 但对于 iOS App Store,这个答案并不完全正确。当我尝试使用 Xcode 7 GM 验证我的应用程序时,我刚刚收到此警告,但是当我使用 Xcode 7 GM 将其实际上传到 ITC 时,没有问题。
  • 你在最后一句话中暗示的暗示是什么?
  • 感谢您提供非常有帮助的答案。您知道在哪里可以找到 API 分析文件吗?我想从我的应用中清除所有警告
  • 因此,如果 iTunes Connects 显示构建已上传,这意味着尽管出现此错误消息,但它确实通过了?而我现在要做的就是等待他们的批准?
【解决方案2】:

这是绕过它们的简单方法...将选择器名称反向存储,例如“dlroWolleH”,然后在调用方法之前反转字符串。

如果 Apple 明白这一点,那么您可以加密它们。

【讨论】:

  • 或者您可以遵循审查指南而不使用私有 API。
  • 这不会阻止任何事情。他们将能够检测是否从方法本身调用了该方法。不是来自您使用的选择器名称。
  • @nicktones 可以在将来的某个时间点(例如在您的应用获得批准后)不调用私有方法
【解决方案3】:

在我的第一个 Swift 项目中第一次遇到这个问题后,看起来这个问题最常见的答案是:

如果您使用 Swift 2.x 和 XCode 7,您将收到此错误。无视就好。

[更新:XCode 7.3 和 iOS 9.3 的推出似乎已经解决了这个问题!]

【讨论】:

  • 我在 Xcode 7.3 中使用 Swift 2.1,这似乎是这种情况。希望他们能尽快修复它。
  • jap,我也在使用 Swift 2.1.1 和 xCode 7.2.1 获取此信息...如果它通过了,我会告诉你。
猜你喜欢
  • 2011-09-15
  • 2017-07-07
  • 1970-01-01
  • 2021-06-18
  • 2011-09-22
  • 1970-01-01
  • 1970-01-01
  • 2015-07-17
  • 1970-01-01
相关资源
最近更新 更多