ccc1.5.2热更新获取字节进度不准确。。

log信息如下:
Simulator: JS Custom Version Compare: version A is 0.0.1, version B is 1.0.0
Simulator: event.getDownloadedBytes() / event.getTotalBytes() =0 / 0
Simulator: JS Custom Version Compare: version A is 0.0.1, version B is 1.0.0
Simulator: event.getDownloadedBytes() / event.getTotalBytes() =0 / 0
Simulator: Verification passed : src/jsb_polyfill.jsc (3b7f66ec05955f0bb8393843887d663a)
Simulator: event.getDownloadedBytes() / event.getTotalBytes() =0 / 1570266
Simulator: 更新完成~

项目中使用发现使用字节进度不准确,这个是我为了简单明了故意只下载一个文件的例子,log发现event.getDownloadedBytes() 还是0,就突然完成更新了,实际项目中会有进度,但是也就走到50%左右,然后突然完成了。求大神解答~

1赞

你的 manifest 中有没有提供 size 信息?没有的话,是依赖下载过程中返回的信息来判断 total bytes 的,如果是单个文件有可能这个文件确实是很快就下载完成了。

项目中,还是建议提供 size 信息,这样就不依赖请求回来的信息了,而是直接就可以算出总的 total bytes

manifest里是有size信息的,我这个只是为了简单看log才故意弄成一个文件,在实际项目中也是有跳进度的问题,manifes如下:
{“packageUrl”:“http://192.168.1.155/dt",“remoteManifestUrl”:“http://192.168.1.155/dt/project.manifest”,“remoteVersionUrl”:“http://192.168.1.155/dt/version.manifest”,“version”:“1.0.0”,“assets”:{“src/jsb_anysdk.jsc”:{“size”:9897,“md5”:“786252fd7935cb117a640bca348ed8aa”},“src/jsb_anysdk_constants.jsc”:{“size”:6976,“md5”:“4afd432280a7a2c16e7f6e20f2aaa739”},“src/jsb_polyfill.jsc”:{“size”:1570269,“md5”:“229a6b9c7e90674fdde9fb8d7f81e6ff”},“src/project.jsc”:{“size”:14869,“md5”:“9efe352fab889856b8dad61001179e3f”},“src/settings.jsc”:{“size”:836,“md5”:“23de02abadf35b0f7687e3b52816932f”},“res/import/2d/2d2f792f-a40c-49bb-a189-ed176a246e49.json”:{“size”:1842,“md5”:“bc0858b4231db31ff0fc99bbe78a99de”},“res/import/31/31bc895a-c003-4566-a9f3-2e54ae1c17dc.json”:{“size”:171,“md5”:“0e8e9e67cc5353d7929b794d32d27adc”},“res/import/41/410fb916-8721-4663-bab8-34397391ace7.json”:{“size”:164,“md5”:“1e2d427cffc40569124cba36b8675086”},“res/raw-assets/Texture/HelloWorld.png”:{“size”:37864,“md5”:“d0d038ddeb63ef9800e6afc66105a49a”},“res/raw-assets/Texture/singleColor.png”:{“size”:17197,“md5”:“5db1eca7213a22613f5928ea2f8e85e1”}},"searchPaths”:[]}

你使用什么事件来更新进度的?

使用的这个 :
case jsb.EventAssetsManager.UPDATE_PROGRESSION://5 最新进展 做 进度的
cc.log(“event.getDownloadedBytes() / event.getTotalBytes() =” + event.getDownloadedBytes() + ’ / ’ + event.getTotalBytes());
this._updateCallback(event.getPercent());
break;

马赛克~

麻烦把真实项目里面的 log 发出来看看,我也有点不理解,我们的测试例里面的 byte 信息是正常的

log如下:
2017-07-05T06:10:13.461Z - normal: Simulator: JS Custom Version Compare: version A is 0.0.1, version B is 1.0.0

2017-07-05T06:10:13.589Z - normal: Simulator: event.getDownloadedFiles() / event.getTotalFiles() =0 / 0

2017-07-05T06:10:13.590Z - normal: Simulator: event.getPercentByFile()= NaN

2017-07-05T06:10:13.590Z - normal: Simulator: event.getDownloadedBytes() / event.getTotalBytes() =0 / 0

2017-07-05T06:10:13.590Z - normal: Simulator: event.getPercent()= NaN

2017-07-05T06:10:13.590Z - normal: Simulator: JS Custom Version Compare: version A is 0.0.1, version B is 1.0.0

2017-07-05T06:10:13.591Z - normal: Simulator: event.getDownloadedFiles() / event.getTotalFiles() =0 / 8

2017-07-05T06:10:13.591Z - normal: Simulator: event.getPercentByFile()= 0

2017-07-05T06:10:13.591Z - normal: Simulator: event.getDownloadedBytes() / event.getTotalBytes() =0 / 0

2017-07-05T06:10:13.591Z - normal: Simulator: event.getPercent()= NaN

2017-07-05T06:10:13.705Z - normal: Simulator: Verification passed : res/raw-assets/Texture/singleColor.png (5db1eca7213a22613f5928ea2f8e85e1)

2017-07-05T06:10:13.705Z - normal: Simulator: event.getDownloadedFiles() / event.getTotalFiles() =1 / 8

2017-07-05T06:10:13.705Z - normal: Simulator: event.getPercentByFile()= 0.125

2017-07-05T06:10:13.705Z - normal: Simulator: event.getDownloadedBytes() / event.getTotalBytes() =0 / 1647650

2017-07-05T06:10:13.706Z - normal: Simulator: event.getPercent()= 0

2017-07-05T06:10:13.706Z - normal: Simulator: event.getDownloadedFiles() / event.getTotalFiles() =1 / 8

2017-07-05T06:10:13.706Z - normal: Simulator: event.getPercentByFile()= 0.125

2017-07-05T06:10:13.706Z - normal: Simulator: event.getDownloadedBytes() / event.getTotalBytes() =17197 / 1647650

2017-07-05T06:10:13.706Z - normal: Simulator: event.getPercent()= 0.010437289252877235

2017-07-05T06:10:13.706Z - normal: Simulator: Verification passed : src/settings.jsc (c26fa7fc2df2794df088eb8f48525b8e)

2017-07-05T06:10:13.707Z - normal: Simulator: event.getDownloadedFiles() / event.getTotalFiles() =2 / 8

2017-07-05T06:10:13.707Z - normal: Simulator: event.getPercentByFile()= 0.25

2017-07-05T06:10:13.707Z - normal: Simulator: event.getDownloadedBytes() / event.getTotalBytes() =17197 / 1647650

2017-07-05T06:10:13.707Z - normal: Simulator: event.getPercent()= 0.010437289252877235

2017-07-05T06:10:13.707Z - normal: Simulator: Verification passed : src/project.jsc (1615a8815f6d8803923fd381a348764f)

2017-07-05T06:10:13.708Z - normal: Simulator: event.getDownloadedFiles() / event.getTotalFiles() =3 / 8

2017-07-05T06:10:13.708Z - normal: Simulator: event.getPercentByFile()= 0.375

2017-07-05T06:10:13.708Z - normal: Simulator: event.getDownloadedBytes() / event.getTotalBytes() =18200 / 1647650

2017-07-05T06:10:13.709Z - normal: Simulator: event.getPercent()= 0.011046035215258598

2017-07-05T06:10:13.709Z - normal: Simulator: Verification passed : src/jsb_anysdk_constants.jsc (d970a7c981636dacf58a75d6a00bb565)

2017-07-05T06:10:13.709Z - normal: Simulator: event.getDownloadedFiles() / event.getTotalFiles() =4 / 8

2017-07-05T06:10:13.709Z - normal: Simulator: event.getPercentByFile()= 0.5

2017-07-05T06:10:13.709Z - normal: Simulator: event.getDownloadedBytes() / event.getTotalBytes() =20496 / 1647650

2017-07-05T06:10:13.709Z - normal: Simulator: event.getPercent()= 0.01243953499943018

2017-07-05T06:10:13.709Z - normal: Simulator: Verification passed : res/import/05/05dd1dc0e.json (fb196c0a8509706b8a17c26b74480c50)

2017-07-05T06:10:13.710Z - normal: Simulator: event.getDownloadedFiles() / event.getTotalFiles() =5 / 8

2017-07-05T06:10:13.710Z - normal: Simulator: event.getPercentByFile()= 0.625

2017-07-05T06:10:13.710Z - normal: Simulator: event.getDownloadedBytes() / event.getTotalBytes() =27469 / 1647650

2017-07-05T06:10:13.710Z - normal: Simulator: event.getPercent()= 0.016671624034643173

2017-07-05T06:10:13.710Z - normal: Simulator: Verification passed : src/jsb_anysdk.jsc (74ec33ef92846341563ca8f3de8f301d)

2017-07-05T06:10:13.710Z - normal: Simulator: event.getDownloadedFiles() / event.getTotalFiles() =6 / 8

2017-07-05T06:10:13.710Z - normal: Simulator: event.getPercentByFile()= 0.75

2017-07-05T06:10:13.711Z - normal: Simulator: event.getDownloadedBytes() / event.getTotalBytes() =29626 / 1647650

2017-07-05T06:10:13.711Z - normal: Simulator: event.getPercent()= 0.01798075996339321

2017-07-05T06:10:13.711Z - normal: Simulator: event.getDownloadedFiles() / event.getTotalFiles() =6 / 8

2017-07-05T06:10:13.711Z - normal: Simulator: event.getPercentByFile()= 0.75

2017-07-05T06:10:13.711Z - normal: Simulator: event.getDownloadedBytes() / event.getTotalBytes() =39520 / 1647650

2017-07-05T06:10:13.712Z - normal: Simulator: event.getPercent()= 0.02398567646741867

2017-07-05T06:10:13.712Z - normal: Simulator: Verification passed : res/raw-assets/Texture/HelloWorld.png (d0d038ddeb63ef9800e6afc66105a49a)

2017-07-05T06:10:13.712Z - normal: Simulator: event.getDownloadedFiles() / event.getTotalFiles() =7 / 8

2017-07-05T06:10:13.712Z - normal: Simulator: event.getPercentByFile()= 0.875

2017-07-05T06:10:13.712Z - normal: Simulator: event.getDownloadedBytes() / event.getTotalBytes() =39520 / 1647650

2017-07-05T06:10:13.712Z - normal: Simulator: event.getPercent()= 0.02398567646741867

2017-07-05T06:10:13.713Z - normal: Simulator: event.getDownloadedFiles() / event.getTotalFiles() =7 / 8

2017-07-05T06:10:13.713Z - normal: Simulator: event.getPercentByFile()= 0.875

2017-07-05T06:10:13.713Z - normal: Simulator: event.getDownloadedBytes() / event.getTotalBytes() =77384 / 1647650

2017-07-05T06:10:13.713Z - normal: Simulator: event.getPercent()= 0.04696628451347351

2017-07-05T06:10:13.713Z - normal: Simulator: Verification passed : src/jsb_polyfill.jsc (3b7f66ec05955f0bb8393843887d663a)

2017-07-05T06:10:13.714Z - normal: Simulator: event.getDownloadedFiles() / event.getTotalFiles() =8 / 8

2017-07-05T06:10:13.714Z - normal: Simulator: event.getPercentByFile()= 1

2017-07-05T06:10:13.714Z - normal: Simulator: event.getDownloadedBytes() / event.getTotalBytes() =77384 / 1647650

2017-07-05T06:10:13.714Z - normal: Simulator: event.getPercent()= 0.04696628451347351

2017-07-05T06:10:13.721Z - normal: Simulator: 更新完成~

输出代码如下:
case jsb.EventAssetsManager.UPDATE_PROGRESSION://5 最新进展 做 进度的
cc.log(“event.getDownloadedFiles() / event.getTotalFiles() =”+event.getDownloadedFiles() + ’ / ’ + event.getTotalFiles());
cc.log("event.getPercentByFile()= "+event.getPercentByFile());
cc.log(“event.getDownloadedBytes() / event.getTotalBytes() =” + event.getDownloadedBytes() + ’ / ’ + event.getTotalBytes());
cc.log("event.getPercent()= "+event.getPercent());
break;

这是 Android 平台把?

我这个是在creator 的模拟器环境运行的,win10.

呃,不建议用模拟器跑热更新项目,不过我会尝试一下