生成project.manifest问题

  • Creator 版本:1.7.2-beta.2
  • 目标平台:(Web / iOS / Android / 模拟器)
  • 编辑器操作系统(可选):Mac

1、构建发布包时,先构建IOS工程,再用热更新工具生成project.manifest,版本号为1.0,然后把生成的project.manifest放到res/raw-assets下面,最后再打包上传。

2、更新包的结构如下:热更新工具生成project.manifest为m1,包内部的project.manifest为m2.


第一种情况:打更新包时,也是先构建IOS工程,再用热更新工具生成m1。这时m1为新生成的版本号为1.1,m2为构建之前的版本号为1.0,这样可以成功的热更新,但是游戏中读取本地project.manifest文件时显示的是1.0。
第二种情况:先构建IOS工程,再把m2的版本号改为1.1,再用热更新工具生成m1。这时m1、m2的版本号就是相同的,第一次进游戏也能正常更新,游戏中读取本地project.manifest文件时显示的是1.1。但是这样做的话,每次进游戏都会更新。

m2是游戏中热更新组建需要引用的文件,m1是热更新工具通过res和src生成的。m1文件中的project.manifest字段就是m2.请教下各位大神,怎样打热更新包才能更新成功,并且游戏中读取本地project.manifest文件时是最新的版本号。

@Knox @jare @dumganhar

应该使用第一种情况,不过你少了一步,要把raw-assets目录下的m2替换成m1 ,然后上传更新包。 更新包里面的两个project.manifest文件是同一个,都是构建后生成的。

不行啊,如果把m2替换成m1的话,m1文件内res/raw-assets/project.manifest存储的md5就和m2不一样了,在热更新验证时就会出错额。

cocos大神能帮忙回答一下吗

我几个项目都是这样操作的,没问题啊。 m1文件内res/raw-assets/project.manifest存储的md5就和m2不一样了,就是要这样啊,更新的时候就会把m2更新到客户端,下次客户端就是用更新下来的m2去比较m1 , 这样两者相等,就不会在更新了。

m1文件内res/raw-assets/project.manifest存储的md5就和m2不一样。那setVerifyCallback中的md5判断就会失败,更新就会失败的啊。这个我是试过了的

我这边的流程就是 先比较 version.xml 里面的版本号,然后比较 客户端assets目录下的manifest 与 更新包中的m1 。版本更新时会把 更新包中的m2 替换掉 客户端里面的manifest(我这里多一个version.xml) ,更新完成后,自动重启,更新就完毕了,整个过程都不会读到m2中内容。 只是在下次启动的时候,客户端的manifest就变成了m2 , 因为更新包 m1=m2 ,再次比较就不会在更新了(vesion.xml manifest.xml 更新包和客户端都一样了)。

知道了,感谢分享

对啊,MD5值和m2不一样,我觉得楼上没有做检测呀,请问你是怎么解决的???