热更新manifest内 自己也包含manifest 是怎么通过md5验证的?

如题,我一直很困惑!@panda

不验证自己

这个逻辑是有问题,所以热更新manifest文件官方的建议是一个新版本建一个新的

我搞明白了,做一次热更新完了就忘了,其实是两个manifest,只是自己的md5不一样而已。流程是这样的,
先生成m1.此时m1中自己的md5是上一个版本的。这时复制一份m1为m2,将m1 md5后的值替换掉m2中自己的md5的值。

暴力一点也可以把m1替换到资源目录下,再次生成m2。

这样m2描述的就是完整的m1的md5信息。

m2作为放到服务器的对比文件。m1在服务器的资源里。
更新时客户端为m0,和m2对比差异,下载m1,md5校验时,m2中有m1的md5信息,可以通过。
本质就是对比差异用m2,实际下载m1.m2中自己的md5是m1的.所以可以通过校验。

我觉的这个逻辑是整个热更新逻辑最绕的地方。
真的好绕啊,过了半年我就忘了。后面又不理解为毛我每次要生成两次版本文件。

1赞

挖坟了,遇到一个热更md5问题,对相同的工程,内容不变情况下进行两次构建,构建出来的project.manifest里边记录着另外一个manifest文件的md5永远不同,这个是其中一个问题。
另外一个问题是,对于希望用zip包做热更减少下载io,依然两次相同构建,每次构建zip包记录在project.manifest里的MD5全都不同,后来找找社区里有人说需要指定压缩包的固定时间戳,让其忽略修改时间,但内容一样的情况,于是我就加入了固定时间压缩,用的是js的jszip工具,格式如下
jszip.file(文件路径, 文件内容, { binary: true,date: 固定时间戳 });
然而出来的结果依然是md5码全变,
针对这两个问题,不知道楼主有没有碰到过,尤其是第一个问题是否是正常现象。