o2o的网站有哪些,制作简单网页的步骤,WordPress自动建站,网站建设昆山花桥简介#xff1a; 首次打开离线包白屏以及报错“-1009”等该如何处理呢#xff1f; 离线包原理
以一次启动离线包的流程为例#xff0c;离线包的加载流程分为两种场景#xff0c;第一种是离线包下载好的场景#xff0c;流程如图1所示#xff0c;第二种是离线包没下载好的…简介 首次打开离线包白屏以及报错“-1009”等该如何处理呢 离线包原理
以一次启动离线包的流程为例离线包的加载流程分为两种场景第一种是离线包下载好的场景流程如图1所示第二种是离线包没下载好的场景如图2所示 图1离线包加载主流 图2离线包下载流程
我们可以从埋点来跟踪离线包具体的加载流程*
检查本地是否有离线包本地有则执行第四步解压解压之后再进行校验校验通过加载本地离线包如果本地已经安装过那就不需要解压直接走解压后的流程网络请求离线包信息这一步和上一步是异步进行的对应的埋点有 H5_APP_REQUEST对比请求回来的离线包信息再决定是否下载离线包对应的埋点有 H5_APP_DOWNLOAD解压离线包对应的埋点有 H5_APP_UNZIP如果开启了离线包验签校验离线包的合法性对应的埋点有 H5_APP_VERIFY、H5_AL_SESSION_VERIFYTAR_FAIL加载本地离线包对应的埋点有 H5_AL_SESSION_MAP_SUCCESS、H5_AL_SESSION_FALLBACK
注意fallback走线上需要等到离线包请求这个异步请求回调回来之后返回的 fallback mainUrl 确定 Webview 打开的URL。
*参考资料离线包日志埋点
案例1首次打开离线包白屏
STEP1按照离线包加载流程分析首次打开离线包一定是需要走线上的fallback因为本地没有走线上之前一定需要先知道离线包的线上地址也就是URL所以需要查看日志分析是否是请求离线包信息那一步出错了。 STEP2分析日志打开线上离线包的时候URL为空在离线包请求还没有回调回来之前就打开离线包所以出现了白屏。
STEP3检查代码 将创建的离线包控制器作为根视图时机过早所以导致了该问题。
STEP4结合客户需求给出建议可以使用本地预制离线包解决首次过早打开离线包出现白屏的问题。
案例2打开预置离线包报错-1009
复现demo
STEP1断网情况下打开预制离线包失败显示网络无法连接说明打开预制包失败了所以走了线上由于没有网络所以显示网络无法连接问题出在本地预制的离线包上。
STEP2按照离线包的加载流程分析在本地有预制包的情况下出现走线上的情况分别有两种情况离线包验证签名失败和加载本地离线包失败。
STEP3日志分析 观察到有验签失败的字样。
STEP4检查代码客户端是否关闭了验签默认是开启的如果没有关闭那么客户端需要设置对应的公钥或者关闭验签。 STEP5关闭验签再试一遍继续分析日志 H5_AL_SESSION_FALLBACK加载本地离线包失败最终走的线上观察解压离线包成功没有问题问题出在加载离线包那一步日志中查找到H5_APP_EXCEP离线包异常埋点是读取数据时候失败了。
STEP6问题有可能出现在该离线包上面所提供一个正常的离线包给客户做成本地预制离线包断网打开验证没有问题问题就出在该离线包上。
STEP7解开预制的离线包观察离线包是否路径字符总长度是否超过了限制导致读取数据失败。 JS文件名称过长导致总的字符长度超过了限制需要客户修改离线包*。
*参考资料生成离线包
思考和总结
通过上面两个案例的介绍我们可以清晰的看到案例一最终出现问题的原因是请求离线包信息这个请求没有回调回来客户就打开离线包时没有获取到URL问题出现在了请求离线包那一步了而案例二最终定位到加载本地包失败那一步。
了解了离线包的具体加载流程再结合 nebula 容器自动化埋点日志就可以具体定位问题到离线包加载的哪一步了。
本文作者阿里云 mPaaS TMA 团队杨强 荣阳
原文链接 本文为阿里云原创内容未经允许不得转载。