问题定义
离线包验签的原理与作用如 离线包简介 中所述,验签失败并不会直接导致 H5 应用不可用,但会导致 H5 容器无法从本地获取到 H5 应用的资源,所有流量都会 fallback 到线上,对用户体验和性能有一定的影响。
常见症状
网络正常的情况下,离线包应用可以正常打开;关闭网络,离线包应用无法打开。
H5 应用加载缓慢。
基本排查动作
确认控制台是否开启了离线包验签(上传了加签私钥)。确认客户端 H5 容器是否启用了离线包验签功能。常见的配置组合及结果如下:
控制台开启 & 客户端开启:验签可能失败,失败的原因可能是验签密钥不匹配。
控制台开启 & 客户端关闭:问题可能与验签无关。
控制台关闭 & 客户端开启:验签必然失败。
控制台关闭 & 客户端关闭:问题可能与验签无关。
注意客户端验签的配置是否生效是该项检查中一项容易忽略的地方。
抓取 Charles/Fiddler 数据包,观察是否存在 amr 下载动作,确认是否有 fallback 流量。
如果观察到存在对应离线包的 amr 下载动作,且存在 fallback 流量,则可能是验签失败。
如果没有观察到 amr 的下载动作,但是依然存在 fallback 流量,不能完全排查其他原因(离线包预置失败/下载失败等等)。
查看客户端日志,判断验签结果。
Android 客户端日志中搜索
signature verify result
,根据日志上下文判断是否存在验签失败。
解决方案
根据文档,仔细检查离线包验签配置,确认控制台上传的私钥和客户端配置的公钥是否匹配。
注意
如果重新上传控制台离线包签名私钥,所有离线包均需要重新上传,重新生成 amr/h5_json
文件。
文档内容是否对您有帮助?