3.15.1 热更新中断后无法更新

电脑:win7 64位
引擎:3.15.1
ndk:r11
设备:Galaxy Tab S SM-T800
Android:4.4.2

cocos2dx.XYJGame D/Cocos2dxDownloader: onFailure(i:416 headers:[Lcz.msebera.android.httpclient.Header;@42016718 throwable:cz.msebera.android.httpclient.client.HttpResponseException: Requested Range Not Satisfiable file:/data/data/org.cocos2dx.XYJGame/files/update_temp/res/map/110/chunks/ml_3_0.jpg.tmp
07-05 16:36:30.895 18993-18993/org.cocos2dx.XYJGame D/Cocos2dxDownloader: onFailure(i:416 headers:[Lcz.msebera.android.httpclient.Header;@420f8118 throwable:cz.msebera.android.httpclient.client.HttpResponseException: Requested Range Not Satisfiable file:/data/data/org.cocos2dx.XYJGame/files/update_temp/res/map/110/chunks/ml_2_7.jpg.tmp
07-05 16:36:30.895 18993-18993/org.cocos2dx.XYJGame D/Cocos2dxDownloader: onFailure(i:416 headers:[Lcz.msebera.android.httpclient.Header;@42032c90 throwable:cz.msebera.android.httpclient.client.HttpResponseException: Requested Range Not Satisfiable file:/data/data/org.cocos2dx.XYJGame/files/update_temp/res/map/110/chunks/ml_3_5.jpg.tmp
07-05 16:36:30.895 18993-18993/org.cocos2dx.XYJGame D/Cocos2dxDownloader: onFailure(i:416 headers:[Lcz.msebera.android.httpclient.Header;@4201fb88 throwable:cz.msebera.android.httpclient.client.HttpResponseException: Requested Range Not Satisfiable file:/data/data/org.cocos2dx.XYJGame/files/update_temp/res/map/126/chunks/ml_7_6.jpg.tmp
07-05 16:36:30.905 18993-18993/org.cocos2dx.XYJGame D/Cocos2dxDownloader: onFailure(i:416 headers:[Lcz.msebera.android.httpclient.Header;@41ef8d38 throwable:cz.msebera.android.httpclient.client.HttpResponseException: Requested Range Not Satisfiable file:/data/data/org.cocos2dx.XYJGame/files/update_temp/res/map/126/chunks/ml_9_9.jpg.tmp
07-05 16:36:30.905 18993-18993/org.cocos2dx.XYJGame D/Cocos2dxDownloader: onFailure(i:416 headers:[Lcz.msebera.android.httpclient.Header;@41efb090 throwable:cz.msebera.android.httpclient.client.HttpResponseException: Requested Range Not Satisfiable file:/data/data/org.cocos2dx.XYJGame/files/update_temp/res/map/10710/10710.res.tmp
07-05 16:36:30.905 18993-19041/org.cocos2dx.XYJGame D/cocos2d-x debug info: Asset update error: res/ui/json/suit/suitmakepanel.json, cz.msebera.android.httpclient.client.HttpResponseException: Requested Range Not Satisfiable
07-05 16:36:30.905 18993-18993/org.cocos2dx.XYJGame D/Cocos2dxDownloader: onFailure(i:416 headers:[Lcz.msebera.android.httpclient.Header;@41eb0c18 throwable:cz.msebera.android.httpclient.client.HttpResponseException: Requested Range Not Satisfiable file:/data/data/org.cocos2dx.XYJGame/files/update_temp/res/map/126/chunks/ml_14_10.jpg.tmp
07-05 16:36:30.905 18993-18993/org.cocos2dx.XYJGame D/Cocos2dxDownloader: onFailure(i:416 headers:[Lcz.msebera.android.httpclient.Header;@41eb0dc8 throwable:cz.msebera.android.httpclient.client.HttpResponseException: Requested Range Not Satisfiable file:/data/data/org.cocos2dx.XYJGame/files/update_temp/src/game/base/effect/enum_effect_id.js.tmp
07-05 16:36:30.905 18993-18993/org.cocos2dx.XYJGame D/Cocos2dxDownloader: onFailure(i:416 headers:[Lcz.msebera.android.httpclient.Header;@41eefac0 throwable:cz.msebera.android.httpclient.client.HttpResponseException: Requested Range Not Satisfiable file:/data/data/org.cocos2dx.XYJGame/files/update_temp/res/map/126/chunks/ml_3_10.jpg.tmp

在更新过程中关闭程序,再次打开程序,更新失败。(可在更新过程中多次关闭程序,更容易重现。)
无法更新,删除缓存或是卸载重装后才可能更新。
@panda

1赞

安卓确实容易出现更新的问题,你可以考虑把错误的文件所对应的tmp文件删除重下,我现在是这么处理的。

1赞

2赞

查了一天无限更新的bug发现,setVersionCompareHandle 这方法也是没用的,看似能够比较local与remote,实际上cache直接被忽略掉了。
创建的时候就initManifests了,里面会比较localManifest与cacheManifest的版本号,创建完再设置setVersionCompareHandle 就已经迟了,如果像我们游戏这种版本号不是以 . 分隔的,直接就不断的无限循环更新了。

@panda

恩 也只能先这样了

这个在 1.5.2 中已经提供了新的方案

new jsb.AssetsManager(manifestUrl, storagePath, versionCompareHandle)

这样的话 init 阶段的比较也会用 versionCompareHandle 去比较了

:joy:用的cocos-js, 我先改生成工具吧

mark