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包,稍等幾分鐘,便可查看掃描的結果。
學習