我要将我的第一个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.
我的上传被拒绝的理由是:“无效的二进制文件”
有没有人有这种情况的经验?
更新:此警告不是拒绝的原因,也可能是应用归档问题。我成功发布了我的应用程序存储。
所以,我们可以放心地忽略它。
答案 0 :(得分: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 Naming Conventions并尝试预测。这将减少未来的麻烦。然而,在Apple引入名称空间之前,我们可能会不时地遇到这个问题。
“无效二进制”错误可能来自多种原因,但它与App Loader创建的API分析文档完全无关。
您应该知道即使扫描,仍然有办法绕过禁止使用私有/未记录的API。 :)
答案 1 :(得分:10)
在我的第一个Swift项目上第一次遇到这个问题后,现在看起来这个问题最常见的答案是:
如果您使用Swift 2.x和XCode 7,您将收到此错误。只是忽略它。
[更新:XCode 7.3& iOS 9.3推出似乎解决了这个问题!]
答案 2 :(得分:1)
这是一种简单的解决方法...将选择器名称反向存储,例如" dlroWolleH",然后在调用方法之前反转字符串。
如果Apple对此有所了解,那么你可以加密它们。