AppStore审核最大痛点能够概括为三个:“误报率高” 、“描述模糊”和 “申诉慢”。
咱们深知,苹果的上架审核很是严格,对私有API的调用是绝对不能容忍的,不少开发者都对提审坐卧不安,明明我没用到这个方法,为何又被拒了?代码里翻了几遍都没找到相关的字符,怎么办啊…orz
api
知己知彼,百战百胜。想要跨越审核这座大山,得知道苹果审核到底是怎样的。那咱们就来研究下苹果是怎么对付咱们的。首先,咱们提交给苹果的,是一个ipa文件,里面的bin文件,都是编译好的二进制可执行文件,苹果生态中叫作machO格式,machO格式定义了各类分段,好比引用的库列表,定义的类列表,方法列表,协议列表,字符串列表,而后又在一个地址映射表中记载着这些类,方法的对应关系,和实际的机器码机址。苹果只要对这些特定的段进行扫描,就能扫出来有没有引用一些非公开的API,类,系统库。 根据UC多年的经验积累,苹果会特别关注如下几点xcode
为了解决iOS开发者的这个困扰,岩鼠深刻研究了如何去发现及应对以上问题,毕竟,提审流程太长了,被拒的滋味真的很差受。微信
咱们知道,iOS都是自成体系的,不少东西脱离不了macOS系统,咱们须要平台化,通用化,首先须要解决macOS系统的依赖。因此要把machO格式的解析啃下来,咱们要把所加载的动态库,全部方法名,类名,有实现的方法名,全部ascii字符串都加载出来。这些都在ipa的bin文件里面,咱们按照machO格式去读取出来便可。怎么作呢?
首先咱们把ipa里的bin文件解压出来,而后依次读取主模块,各类插件的bin,关于machO格式,这里简单说明一下,machO文件会分红多个段,一个段又分红多个块,以下图:
markdown
利用RuntimeBrowser,在当前主流固件的真机运行,并导出的全部Frameworks和私有的PrivateFrameworks库,取出后进行对比,最终把私有API按固件版本入库。
app
完成初始化私有API库的工做后,是否是就一劳永逸了呢?其实不是的,一方面是私有API库的准确性须要持续提高,另外一方面是新的一些私有API也要持续加入,这样才能保证iOS预审的有效性和准确率。
岩鼠的私有API库创建了智能学习机制,会收集阿里内部应用审核被拒的记录,分析其中私有API被拒的状况,主动添加新的私有API,不断完善私有API库。与此同时也会创建白名单,提高准确率。
oop
在岩鼠上进行iOS预审十分简单,只须要上传待提审的ipa包,稍等几分钟,便可查看扫描的结果。
学习