热更新AssetManagerEx的bug (根据v1.4)

谢谢反馈,问题原因已经找到,可以试一下 1.4 最新的分支

1.4分支是指
https://github.com/pandamicro/cocos2d-x-lite/commits/v1.4
这个么?
准备merge一下测测。。

是的,是的,就是它

@panda panda大神,看到你关于AssetManager的修复,非常感谢,就是想问下,现在我们是基于1.3开发的,产品快做完了,想问下,如何就针对这个问题,在现有的基础上修复下~~不胜感激!

看上面的回复

好的,非常感谢~

已经拉取了,也download-deps.py了,但是编译错误,log是
https://pan.baidu.com/s/1eS7i4z4
请问是什么原因呢?
这种自定义的方式都没有教程啊
是放到cocos creator下,还是工程下呢?我放工程下的cocos2dx了

@panda 我们现在热更新遇到的问题是,资源文件能成功更新,jsc文件没有生效,是什么原因呀

检查一下搜索路径是否有生效,可以在 ScriptingCore 的 runScript / compileScript 那边下断点

@panda
我们现在热更新遇到的问题是,资源文件能成功更新,jsc文件没有生效,是什么原因呀
01-14 17:30:48.105: D/Cocos2dxDownloader(24993): onSuccess(i:200 headers:[Lcz.msebera.android.httpclient.Header;@431af778 file:/data/data/com.xxx.xxx/files/remote-asset/src/project.jsc.tmp
这里显示已经从远处服务器下载下来了
查看FileUtils搜索路径,也是远程路径优先,但是FileUtils好像找不到远程下载的jsc文件,然后去assets/src/project.jsc这里加载了jsc文件.
01-14 17:30:50.125: D/cocos2d-x debug info(24993): ScriptingCore::executeScript path: src/project.js
01-14 17:30:50.125: D/cocos2d-x debug info(24993): find FileUtils::fullPathForFilename:assets/src/project.jsc
01-14 17:30:50.135: D/cocos2d-x debug info(24993): ScriptingCore::compileScript byteCodePath : src/project.jsc

更新完有重启么 ?

需要去 FileUtils 里面去跟踪一下,看看为什么没有生效了

setAssetDonloadState这个操作其实会卡很久 比如现在project.manifest有 2m大,这次更新 只更新3个文件,那么要操作几千次setAssetDownloadState(Succ) ,这个会在一开始的时候卡很久,其实这个操作没有也没关系

最新的代码 合并的过程中我发现 tempManifest其实第二次打开就会被remote下载下来的manifest覆盖,还有每下载一个文件就保存tempManifest 会在更新过程中有明显的卡顿

嗯,这个刚刚已经调整了,设置了按照下载进度,每过 10% 就保存一次

https://github.com/cocos-creator/cocos2d-x-lite/pull/511

这个问题在这个 PR 中优化了

1赞

有个情况帮忙分析下原因,比如说 版本号 1.1.0的客户端 自动更新到了 1.3.0,然后覆盖安装了一个1.2.0的安装包,最后打开 执行的代码逻辑还是 1.2.0的。如果删除原先的安装包,再安装1.2.0再自动 更新到1.3.0则正常 执行的是1.3.0的代码

有什么原因吗,跟搜索路径之类的相关吗

这个bug确实存在,因为每次ios替换安装的时候 writabelPath会改变 跟之前不一样 main.js 里使用保存的 searchpath就会出错

覆盖安装,不仅 writablePath 不同,旧安装包所引用的 writablePath 也会被清空,所以不论如何之前的本地下载版本都没有用了

这个在应用层是无法控制的,必须重新检查更新

我现在的改法 在 main.js里直接把 writablepath加到searchpath里去了

仔细看了这个,还是云里雾里