繁体   English   中英

Apple App Store提交的内容,除了Apple对非公共API的使用进行自动测试外,还有其他人吗?

[英]Apple App Store submission, anyone other than Apple automated testing for use of Non-Public APIs?

苹果显然以某种方式实现了这种自动化,我希望能够访问他们正在使用的系统版本。

除此以外,我有兴趣知道是否有人自己实现了此功能。 有时,我在一个团队中工作,在这些团队中,经验较少的开发人员可能在不知不觉中使用非公开API的情况, 或者可能会要求我使用我不知道的第三方库使用非公开API。

我知道可以扫描应用程序可执行文件的方法名称。 我想针对已知的非公共方法的数据库或针对公共方法的数据库运行这些方法。 在Objective-C / SQL中,该过程的一部分可能类似于:

for (NSString *selector in methodsArray) {
   NSArray *array = [DataSource arrayWithQueryString:[NSString stringWithFormat:(SELECT `selectors` FROM `publicAPI` WHERE `selector` = '%@'),selector]]; 
   BOOL public = ([array count] > 0);
   if (!public) 
      return NO;
}

我的猜测是,大多数工作将集中在如何隔离方法名称并将其存储在数据库中的方式上,以使其最有效。

我可以自己创建一个版本,但是如果有人已经做过,我会对了解它感兴趣,并且我不在乎它用什么语言实现。

就是这个了,App Scanner http://www.chimpstudios.com/appscanner/

如果调用的API不在Apple的公共标头之一中,则会收到诸如“选择器无法识别”之类的编译器警告。 偶然使用私有API的情况应该很少见。

现在,如果采取特定步骤可以抑制编译器警告,例如,为包含私有API方法声明的对象创建自己的接口。 如果您的团队中有一个流氓开发人员,或者您正在继承代码,那么类似的事情可能会让您大吃一惊。

如果使用的测试框架(例如GTM iPhone测试套件)使用私有API调用,则还必须小心。 如果不小心将其编译到您提交的二进制文件中,您将流连忘返。 Xcode 4有助于减轻这种风险,因为在新IDE中进行测试是一个完全独立的动作,而不仅仅是一个单独的目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM