3.8.7热更新有问题

3.8.7热更新有问题


image
如果版本号不一样,但是文件md5一样,会导致diffMap是空的,直接运行updateSucceed,会给js发消息dispatchUpdateEvent(EventAssetsManagerEx::EventCode::UPDATE_FINISHED);直接导致_eventCallback的时候闪退

@zBlink

好奇一下,我看了cpp的代码,目前确实是按照你的说法来运行的,从版本号不一样,到 _eventCallBack ,都是按照你说的来运行的,但是具体还是哪里闪退呢

就是运行到_eventCallBack这句话闪退了

这里是有做判断的,或者你在细定位一下?

能进去的运行过去了,我们发现是在新开的线程里面运行必定闪退,如果去掉AsyncTaskPool::getInstance()->enqueue就没有问题

你这部分代码是 385 加的,387 没加,是因为对比 manifest 的时候,有反馈说大项目同步做差异补交特别耗时,所以从 385 之后改为异步

不太确定你之前是哪个版本的,如果是这部分导致的崩溃,不算是 387 有问题,是 385+都有问题

调试一下?C++调试还是很容易看出问题的

是有这个问题的
我用的3.8.5
我直接注释了 updateSucceed 这个
:joy:

我们下载得就是3.8.7的引擎,在做热更测试的时候发现,打过日志到_eventCallback必闪退,断点也是

AI说确实有问题

你可以自己试试贴 .h .cpp 源码收,按照截图那个方式问一下,就给你分析和解决方案了

我们已经解决了,但是想让官网看看,有没有更优解

另外 那个静态共享实例 assestManager 也是有问题的

我们试了一下在线程里面调用回调回到js必定会闪退,所以固定在这个_eventCallback闪退,感觉还涉及到gc的问题我们如果用变量保存回调函数不是用匿名函数也不会闪退

能否贴下解决方案

1赞

路过插个眼,后面有可能用到。