喜接新項目往往預(yù)示的會出一堆問題烫沙。解決問題的同時往往也就是學(xué)到更多東西的時候霎箍,這也許就是學(xué)習(xí)到新東西最直接最快速的方法吧祈匙!
小編經(jīng)過努力,新項目終于過測試了鲜侥,可是被蘋果大大給拒了褂始,好苦啊,最近的審核真的是沒有誰了描函。這回被拒是因為項目中存在私有api崎苗,下圖為被拒信息。
這就坑了啊舀寓,這么大一個項目胆数,我如何定位呢?
如果是代碼里面運(yùn)用到私有api互墓,那就簡單了必尼,直接
command+Shift+F
,就可以定位了篡撵!prefs:root=
就是原來代碼里面的判莉,小編找到后果斷刪除了!
最麻煩的就是在第三方SDK中的私有api(com.apple.springboard.lockcomplete
)育谬,實(shí)在不知道如何定位了券盅。在被拒消息中也提示了我們?nèi)绾味ㄎ唬俣?Google走一波膛檀,學(xué)習(xí)了一下锰镀,隨便寫個筆記。好記性不如爛筆頭嘛咖刃!
方法1:strings檢測
這個方法是我在被拒信息中看到的蘋果大大建議的方法泳炉,步驟如下:
1、獲取release的ipa包嚎杨,打包是選擇的方式為:App Store
2胡桃、將 .ipa 修改為 .zip,減壓磕潮,獲取到兩個文件夾Payload翠胰、Symbols
3、打開命令行自脯,cd 到 Payload 里面的 app之景,然后使用 strings 命令進(jìn)行查找
strings - -a -arch armv7 "工程名" | grep com.apple.springboard.lockcomplete
還有一種命令,直接生成一個 txt 文件膏潮。
strings - -a -arch armv7 "工程名" > /Users/admin/Desktop/strings.txt
運(yùn)行后會在桌面上出現(xiàn)一個 strings.txt
文件锻狗,文件的路徑和名字隨個人開發(fā)習(xí)慣
兩種命令獲取方式都沒有定位到具體位置,只是告訴我們存在這個私有api
方法2:otool工具(xcode自帶焕参,可以直接在終端中使用)
前兩步同方法1
terminal中 cd 到 Payload 里面的 app
然后使用如下命令
otool -L appName
這個命令會列出你所有使用的系統(tǒng)庫,檢查一下給出的列表中有沒有私有api的庫
如果對命令不熟悉還可以使用
otool -help
去查看命令幫助文檔
方法3:全局搜索(建議使用)
這個方法是我認(rèn)為最直接最有效的方法轻纪!
1、 cd 到你的工程目錄
2叠纷、使用全局搜索命令(注意最后要加一個點(diǎn))
grep -r lockcomplete .
這個方法直接定位到這個私有api出現(xiàn)在
AmazonFling.framework
中刻帚。
到這里,解決上述第三方庫的私有API的問題涩嚣,就是直接替換掉新的SDK崇众,當(dāng)然如果新的第三方庫也有私有API的話,那就只能舍棄了航厚,否則基本無解顷歌。
小編比較幸運(yùn),直接更換最新的 AmazonFling.framework
后幔睬,就消除了私有api(com.apple.springboard.lockcomplete
)眯漩。在發(fā)版前,使用這兩個方法都進(jìn)行了驗證麻顶,私有api不存在了赦抖!??