【发布时间】:2009-12-08 00:13:16
【问题描述】:
现在,Apple 正在运行某种静态分析来自动检查私有 API 的使用,许多人因为 Three20 库而被捕。我使用另一个第三方库(我自己从代码编译),我想在提交给 Apple 之前自动审核它以供私有 API 使用,这样我就可以消除/重写这些部分。
如果我在我的应用程序可执行文件上运行nm,我会得到一个符号列表,并且我会在其中看到我不使用的符号。例如,我看到 _AudioServicesPlaySystemSound,如果我在 XCode 中搜索“AudioServicesPlaySystemSound”,我没有得到任何结果。有什么方法可以自动区分对私有 API 的调用,例如我注意到 Apple 习惯用初始下划线命名它们。
但是:如果我故意包含对私有 API 的调用,它不会出现在 nm 的输出中,但如果我在二进制文件上运行 strings,它确实会出现。基于此,我的一个想法是将所有私有 API 调用的巨大列表编译成一个巨大的表,并在字符串输出中自动搜索它们。我还没有这样做。
有没有人有任何关于如何自动捕捉这些东西的提示,所以我只经历一次审查过程?
【问题讨论】:
-
他们反对 Three20?这实际上是由为 iPhone 创建 Facebook 应用程序的开发人员编写的。如果你的应用因为 Three20 而被拒绝,那 Facebook 应用应该也太……呵呵。只是说;-)
-
我想下次 Facebook 提交更新时,如果他们不使用符合 Apple 政策的最新版本,他们会被拒绝。