2.0.9 p1 热更新bug

Creator 版本:2.0.9p1
目标平台:ios
之前哪个版本是正常的 :1.8.2
问题:热更新大厅所有代码后,首次下载子游戏资源,正常进入,划掉app进程。重新进去,进入子游戏时,报错找不到子游戏资源。

1.bug重现方式:

1.A.构建打包,简体包,此时不含 子游戏目录任何东西,执行脚本删除子游戏资源(当然这里没有子游戏资源,所以忽略)。
2.B.构建所有代码资源包括子游戏代码和资源,构建热更新资源,代码正常更新后,首次进入下载子游戏资源,运行正常。
3.划掉app进程,再次进入大厅正常,版本号也正常,资源搜索路径(docxxxx/game/,docxxxx/game/104/,)也正常,点击进入子游戏,报错,具体报错为找不到子游戏资源。

总结下(1),就是热更后首次下载子游戏资源,正常进入游戏。划掉进程再进入,无法找倒子游戏资源。

2.再尝试寻找原因:
1.A.构建打包,简体包,构建时含 子游戏目录代码与资源,执行脚本删除子游戏资源。(代码都合并到了pro里,只是删除了子游戏资源)。

2.B.构建所有代码资源包括子游戏代码和资源,构建热更新资源,代码正常更新后,首次进入下载子游戏资源,运行正常。
3.划掉app进程,再次进入大厅正常,版本号,资源搜索路径也都正常,也能打开子游戏场景,也没问题。

总结下2。经过再次尝试,往子游戏里新增了一个新的音频文件,此时bug出现了,就是打包时,没有出现过的资源,被热更下来后,首次下载资源时,正常载入,划掉进程再次进入的话,就会找不到那个资源,但是资源肯定是正常下载了的,不然首次使用也会失败,现在问题是,首次使用正常,划掉进程再加载时,会提示找不到。

原来1.8.2没发现过这个问题,对了一下 CCFileUtils.cpp 有微小的代码变动,不知道是不是引起的这个bug,请引擎组帮忙检查下,调试了几天总结出来的

所以1是重现方式,2是目前正常的情况。从1的不走来看,应该是路径引用的问题。
是否可以提供一个简单的测试工程?我这边查一下问题在哪

也不是2是正常情况。

重现步骤是
1.构建打包,

2…新增脚步+资源。构建热更资源

3.首次更新后,脚本正常,新资源也正常访问。

4.划掉app进程。再次启动游戏,发现新资源无法访问了,资源搜索路径输出无异常。。。

1赞

只是构建时需要将热更新部分的资源和代码删除掉再构建,然后全包构建热更新包?

恩,然后启动游戏发现,首次能正常运行,划掉进程后,就不行了,新的代码生效了,但是新的资源说找不到,以前没这问题,210貌似也没这问题,182也没这问题。

1.直接异常:删除场景B以及B代码打包,然后构建全包热更,首次热更下载资源正常执行,代码正常执行,划掉进程,异常,说加载不到热更的资源,代码正常执行。

2.资源异常:全包构建后,在删除B相关资源,然后构建全包热更,热更下载资源正常执行,代码正常执行,划掉进程也正常。

总结发现,构建的时候再,热更的东西才能正常运行,如果在构建时没出现过的资源,被下载后,二次运行会抛出异常找不到,我拿音频实验过,除非那个音频是构建是就在的,构建后在删除它,热更后二次运行就能正常播放找到,如果打包时,它根本就不存在,二次运行就说找不到。。。。

哪怕是同名替换的资源,也能正常加载,新增的就会出现不行,哪怕第一次下载可以,二次运行也会说找不到,路径输出正常。

构建的时候mac
node version_generator.js 1.0.2 -u http://xxxxx -s build/jsb-link/ -d assets/
构建出来的版本号永远是1.0。0

构建热更,我都只在win下构建的

是不是少了 -v?

是的呢,我排查下

你肯定是在逗我玩。。。。。我火眼晶晶都看不到你少了-v?

哈哈不好意思,老了老眼昏花。。

ios下调试调试的,一切都很完美,资源也正常下载了,路径输出也很正常,首次运行下载游戏资源也进入场景正常,如果划掉进程

再次启动,其中构建打包时没出现过的图片,就会加载失败,说找不到图片

你有没有遇到部分安卓手机开始检测热更新的时候要卡一会,而ios没事?

开始前卡一会,可能是网络问题,也有可能在对比文件,这个是体验问题,你可以优化一下体验,等开始更新的时候再显示百分比,没开始现在前,显示个正在链接啥的,不用先显示0%,一直等着,体验不大好

其实我这个问题,也有解决办法,就是打包时,所有东西都在,在删除子游戏相关资源,但是问题来了,一旦新增东西就会有问题。。。。。这个不是目前解决问题的办法吧。

2.0.9,同样大厅子游戏模式,没有问题。1.x的大厅子游戏模式不能直接用到2.x。

啥意思?有需要修改的地方吗?

构建时所有东西都在,在删除子游戏资源时,是没有问题的,这个bug是,游戏里新增了一个音频,我发现这个音频怎么也找不到的情况下发现的,然后经过反复测试发现有这个bug,以前没注意,好像都可以