将应用程序上传到mac存储时,生成的API分析太大

ara*_*asa 107 macos xcode

我打算将我的第一个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.
Run Code Online (Sandbox Code Playgroud)

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


更新:此警告不是拒绝的原因,它可能是应用程序存档问题.我成功发布了我的应用程序来存储.

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

lsw*_*ank 65

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方法和实例名称冲突.

您可以主动了解Apple的Cocoa命名约定并尝试预测.这将减少未来的麻烦.然而,在Apple引入名称空间之类的东西之前,我们可能会不时地遇到这个问题.

"无效二进制"错误可能来自多种原因,但它与App Loader创建的API分析文档完全无关.

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


Ric*_*ard 10

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

如果您使用Swift 2.x和XCode 7,您将收到此错误.只是忽略它.

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