最近一直在使用ionic2開發(fā)app,遇到了很多問題,大多能從ionic論壇或者stackoverflow找到解決方案,實在沒有還能直接去github給ionic團隊提issue,但是有個問題困擾了我很久,在app上線后收到用戶反饋啟動時間太久了,我很快找到了解決方案,ionic提供生產(chǎn)環(huán)境的打包方式,但我很快又遇到了個問題并且很長一段時間內(nèi)無從下手,就是使用--prod打包后,進入app會白屏,并且是永遠白屏,我在最開始的思路一直是以為我的ionic當前版本太低了,當我抽出兩天時間升級ionic后,解決一系列因為版本升級帶來的問題后,白屏問題依然存在...........
于是,我轉(zhuǎn)換思路,開始從自身找問題.初期,很理所當然的認為開發(fā)模式?jīng)]有錯誤的話,換種打包方式的生產(chǎn)環(huán)境是不可能報錯的,然而在很多次調(diào)試過程中我發(fā)現(xiàn),往往報錯的表現(xiàn)形式是白屏,那么會不會在生產(chǎn)環(huán)境時會自動屏蔽這些錯誤,查閱ionic2的issue list后發(fā)現(xiàn),在app中,編譯錯誤是不會直接顯示的,所以好像顯的編譯很成功,詳情見這里.
扯了一大堆心路歷程,干貨來了,這個問題為什么會困擾我這么久,就是因為我看不到生產(chǎn)環(huán)境的錯誤輸出,所以沒辦法定位錯誤在哪,也導致每個遇到白屏的攻城獅都有可能是不一樣的問題導致,所以就很明了了,我們只要能夠想辦法輸出錯誤信息,就能定位錯誤,從而解決這個問題了.
那么問題又來了,既然xcode和android studio顯示不了錯誤,那怎么解決呢,查閱很多資料,突然想到很久以前用過Safari調(diào)試app,具體步驟如下:
1.Run ionic build ios --prod
2.Run ionic emulate ios
3.Open Safari-> Develop -> Simulator -> index.html (for your app)
4.Check console for errors (if any)
5.Press reload (usually on top left) and monitor the console tab for errors.
Safari如我預(yù)期打印出了錯誤log,很成功的定位到了錯誤,一個第三方組建引用了不存在的文件,解決完就完美解決了白屏問題,iphone6s plus啟動速度從6秒左右提升至2秒左右.