筆者大半個月前決定放棄迭代公司最初基于Cordova+Ionic(基于Angular 1.x)構(gòu)建的App,而倒戈向RN囱持。在基于RN的App臨近提交時,遭遇了一個問題:提交到Test Flight上的App下載后焕济,打開全部閃退纷妆。
最開始懷疑是集成的Easemob(環(huán)信IM)在生產(chǎn)模式拋出了異常所致。這個最直接的懷疑是在集成Easemob3.0是遇到了不少坑晴弃,花費了不少精力才讓Easemob和RN有了親密合體掩幢。(環(huán)信官方提供了一個基于Web IM的RN解決方案,但該方案沒有消息推送上鞠、歷史會話記錄际邻、音視頻消息等,因此芍阎,不適應(yīng)我們的業(yè)務(wù)需要世曾,隧放棄)。排除后發(fā)現(xiàn)錯怪環(huán)信了谴咸。Easemob的RN原生模塊轮听,將在未來兩周內(nèi)提交Github開源托管,有興趣的筒子岭佳,歡迎那啥血巍,你懂得。
調(diào)試是王道珊随,通過xcode將scheme切換到release模式述寡,Run了起來,得到如下Info:
發(fā)現(xiàn)竟然是找不到j(luò)sbundle文件玫恳。第一反應(yīng)這個估計是沒有添加隱私策略辨赐。google了一通看看需要在Info.plist中添加哪些項。一股腦加了些有關(guān)訪問文件系統(tǒng)的Privacy京办,再Run掀序,閃退依舊。單點調(diào)試惭婿,報variable not available錯誤不恭,錯誤如下:
憑以往的經(jīng)驗感覺應(yīng)該是ios11 app settings里面的設(shè)置項有所變化,對照了下财饥,最終發(fā)現(xiàn)Optimization Level的Release值與Apple LLVM 8.0不同换吧,改為None試試看
在生成模式下,再次Run起來钥星,App沒有發(fā)生閃退沾瓦,自此問題解決。感興趣的筒子,也可以逐一試試贯莺。默認的[-Os]值易出問題风喇。后搜索了補充對Optimization level的了解,可以參加此篇blog:問題:編譯策略之代碼邏輯順序不正確(Optimization Level)?缕探。