如何检查您的iOS应用代码是否使用了应用商店不允许的API?

时间:2012-03-14 03:15:14

标签: objective-c xcode iphone-privateapi

我知道当您将应用程序提交到应用程序商店时,应用程序中不允许存在一些受限制的api或代码。

你怎么知道它们是什么?有没有办法在提交之前检查你的应用程序,以确保你没有使用过这样的API?

在设计阶段避免这个问题可能比在以后尝试修复它更好,所以我想知道Xcode中是否有任何工具或文档来确定它。

4 个答案:

答案 0 :(得分:10)

Apple打算让您这样做的方法是使用XCode的验证功能。当您提交应用程序时,您可以构建用于实现(或从XCode菜单中存档)。然后,打开管理器以查看刚刚创建的存档。此时,您可以按管理器中的验证按钮。这将执行验证,而不实际提交应用程序。它会告诉您是否使用私有API。根据 的使用方式,它可能会识别违规行为:

Organizer screenshot

有一些方法可以让代码欺骗这个验证步骤,并且在审阅者查看捆绑包之前使用私有API“逃脱”。但是,据我所知,这些方法都是隐藏私有API使用的有意方法,听起来你正试图发现意外使用。

如果您未通过此验证测试,那么您可能希望使用alan duncan's answer中提到的类似AppScanner的内容。但是,为了完整起见,我想确保人们知道这个验证步骤在XCode中可用,并且在您提交之前检查私有API使用是它正在做的事情之一(并且必须等待几天才被告知你是什么做错了)。此外,即使您未使用管理器中的验证按钮,只需使用提交,该工具也会为您执行验证。唯一的区别是捆绑包是否实际上传到iTunes Connect。

答案 1 :(得分:2)

如果您坚持上面建议的文档化界面,那么你没问题。唯一的问题是第三方库,其实现可能对您不透明。

有一个名为AppScanner的Mac应用程序可以扫描私有API使用情况。但我没有经验。

答案 2 :(得分:1)

您将从

获得有关Apple审批流程的更多信息

答案 3 :(得分:1)

  1. 获取私有API列表。
  2. 使用class-dump处理Mach-O文件,并获取已处理的字符串。
  3. 使用正则表达式获取字符串中的接口,类或方法。
  4. 将API与私有API列表匹配。
  5. 然后GOT吧〜

    我打开了一个项目,但因为我公司的原因,取消了。非常抱歉。