排查指南 | 两个案例学会从埋点排查 iOS 离线包
離線包原理
以一次啟動離線包的流程為例,離線包的加載流程分為兩種場景,第一種是離線包下載好的場景,流程如圖1所示,第二種是離線包沒下載好的場景,如圖2所示:
圖1:離線包加載主流
圖2:離線包下載流程
我們可以從埋點來跟蹤離線包具體的加載流程*:
注意:fallback走線上需要等到離線包請求這個異步請求回調回來之后返回的 fallback + mainUrl 確定 Webview 打開的URL。
*參考資料:離線包日志埋點
案例1:首次打開離線包白屏
STEP1:按照離線包加載流程分析,首次打開離線包一定是需要走線上的fallback,因為本地沒有,走線上之前一定需要先知道離線包的線上地址也就是URL,所以需要查看日志分析是否是請求離線包信息那一步出錯了。
STEP2:分析日志打開線上離線包的時候URL為空,在離線包請求還沒有回調回來之前就打開離線包,所以出現(xiàn)了白屏。
STEP3:檢查代碼
將創(chuàng)建的離線包控制器作為根視圖,時機過早,所以導致了該問題。
STEP4:結合客戶需求給出建議,可以使用本地預制離線包解決首次過早打開離線包出現(xiàn)白屏的問題。
案例2:打開預置離線包,報錯(-1009)
復現(xiàn)demo
STEP1:斷網情況下打開預制離線包失敗顯示網絡無法連接說明打開預制包失敗了,所以走了線上,由于沒有網絡所以顯示網絡無法連接,問題出在本地預制的離線包上。
STEP2:按照離線包的加載流程分析,在本地有預制包的情況下出現(xiàn)走線上的情況分別有兩種情況,離線包驗證簽名失敗和加載本地離線包失敗。
STEP3:日志分析
觀察到有驗簽失敗的字樣。
STEP4:檢查代碼客戶端是否關閉了驗簽,默認是開啟的,如果沒有關閉,那么客戶端需要設置對應的公鑰,或者關閉驗簽。
STEP5:關閉驗簽再試一遍,繼續(xù)分析日志:
H5_AL_SESSION_FALLBACK加載本地離線包失敗,最終走的線上,觀察解壓離線包成功沒有問題,問題出在加載離線包那一步,日志中查找到H5_APP_EXCEP離線包異常埋點,是讀取數(shù)據(jù)時候失敗了。
STEP6:問題有可能出現(xiàn)在該離線包上面,所提供一個正常的離線包給客戶做成本地預制離線包,斷網打開驗證,沒有問題,問題就出在該離線包上。
STEP7:解開預制的離線包,觀察離線包是否路徑字符總長度是否超過了限制導致讀取數(shù)據(jù)失敗。
JS文件名稱過長,導致總的字符長度超過了限制,需要客戶修改離線包*。
*參考資料:生成離線包
思考和總結
通過上面兩個案例的介紹,我們可以清晰的看到案例一最終出現(xiàn)問題的原因是請求離線包信息這個請求沒有回調回來,客戶就打開離線包時沒有獲取到URL,問題出現(xiàn)在了請求離線包那一步了,而案例二最終定位到加載本地包失敗那一步。
了解了離線包的具體加載流程,再結合 nebula 容器自動化埋點日志,就可以具體定位問題到離線包加載的哪一步了。
本文作者:阿里云 mPaaS TMA 團隊(楊強 榮陽)
END
下周二(8.24)阿里云飛天會員日開啟,消息推送等資源包1折秒殺搶購,點擊了解更多折扣詳情。
原文鏈接:https://developer.aliyun.com/article/787725?
版權聲明:本文內容由阿里云實名注冊用戶自發(fā)貢獻,版權歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權,亦不承擔相應法律責任。具體規(guī)則請查看《阿里云開發(fā)者社區(qū)用戶服務協(xié)議》和《阿里云開發(fā)者社區(qū)知識產權保護指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區(qū)將立刻刪除涉嫌侵權內容。總結
以上是生活随笔為你收集整理的排查指南 | 两个案例学会从埋点排查 iOS 离线包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里云知位停车:让车主好停、车场好管
- 下一篇: 《云原生人才计划之Kubernetes