线上项目采用官方建议的热更方式,文件多的时候特别慢 所以打算改成zip差异包的方式更新,中间遇到很多问题。 比如使用官方的xmlHttpRequest 去下载 web上正常 native上居然没有progress回调,放弃。后来发现js.Downloader 导出了js接口,win上使用正常 android上概率性闪退,很大概率,麻烦官方有空查下吧,用的太伤。有没有大神遇到同样的问题解决了。
start(){
var downUrl = "https://xxx.oss-cn-shanghai.aliyuncs.com/hot-update/xxxx_0.0.4.0.zip";
var dirpath = cc.path.join((jsb.fileUtils ? jsb.fileUtils.getWritablePath() : '/'),"hot-update","/");
var filepath = cc.path.join(dirpath,"game.zip");
jsb.fileUtils.createDirectory(dirpath);
var downloader = new jsb.Downloader();
var self = this;
var index = 0;
downloader.setOnTaskError(function(sender,errorCode,errorCodeInternal,errorStr){
self.msg += `errorStr = ${errorStr || ""}\n`;
self.label.string = self.msg;
console.log(`errorStr = ${errorStr || ""}\n`);
})
downloader.setOnTaskProgress(function(sender,bytesReceived,totalBytesReceived,totalBytesExpected){
var str = "下载大小 = " + bytesReceived + "," + "总大小 = " + totalBytesReceived + "," + "预期总大小 = " + totalBytesExpected + "," + "进度 = " + Math.floor(totalBytesReceived / totalBytesExpected * 10000)/100 + "%\n"
if(self.datalist.length >= self.maxLen){
self.datalist.shift();
self.datalist.push(str);
}
else{
self.datalist.push(str);
}
var resultStr = "";
for(var i = 0;i<self.datalist.length;++i){
resultStr += self.datalist[i];
}
self.label.string = resultStr;
// console.log(bytesReceived,totalBytesReceived,totalBytesExpected,Math.floor(totalBytesReceived / totalBytesExpected * 10000)/100 + "%");
})
downloader.setOnFileTaskSuccess(function(sender){
self.msg += `------------------download success\n`;
// self.label.string = self.msg;
var resultStr = "";
for(var i = 0;i<self.datalist.length;++i){
resultStr += self.datalist[i];
}
resultStr += `------------------download success\n`;
self.label.string = resultStr;
console.log(`------------------download success\n`);
})
downloader.createDownloadFileTask(downUrl,filepath,"download_test");
},
