热更新zip包下载闪退

线上项目采用官方建议的热更方式,文件多的时候特别慢 所以打算改成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");
},

可能是安卓http证书的问题。
http://forum.cocos.com/t/https/52302/5

1.9.3 版本

应该不是 换成http也是一样的

还有把downloader改成this下:
this.downloader = new jsb.Downloader();

我之前就是按这两个改了才有progress回调的。

我现在是有的 是概率性闪退

你在android上都ok么 没有闪退? 用的什么版本的

@panda

v2.0.2。
这不是有progress回调了吗。闪退概率有多大,报错的堆栈呢

我们用的1.9.3 闪退概率50左右 明天我用mac调试下看看

已解决

就是js局部变量释放导致c++析构了 好坑