2.6.16采用离线打包后,iOS热更,plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), 执行,报错:
进入title: '安装失败-01' 的分支了(代码在文章末)。
这是error信息
{
"code":-9999,
"message":"指定的位置未找到安装包,http://ask.dcloud.net.cn/article/282"
}
请问有同款问题么?
代码如下:
var dtask = plus.downloader.createDownload(this.context.fileUrl, {},(d, status) =>{
uni.showToast({
title: '下载完成',
mask: false,
duration:1000
});
if(status == 200 ){
plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {
force:true,
},function(){
console.log('install success...');
plus.runtime.restart();
}, function(error) {
uni.showToast({
title: '安装失败-01',
mask: false,
duration: 1500
});
})
}else{
uni.showToast({
title: '更新失败-02',
mask: false,
duration: 1500
});
}
})
其他说明:云打包,iOS没问题。业务代码没变动。只是iOS的打包换成离线打包。HBuilderX 2.6.16版本。
3 个回复
前行者007 (作者) - 写代码是不可能写一辈子的,早日上岸吧!
这是下载文件成功后的打印日志:
前行者007 (作者) - 写代码是不可能写一辈子的,早日上岸吧!
下载文件后,业务代码 中runtime指定的文件路径是:
"filename":"_downloads/15-1597739296.wgt",
刚导出了iOS手机上App的文件。能查找到,热更下载后的文件:
AppData/Library/Caches/Pandora/downloads/15-1597739296.wgt
截图如附件中
前行者007 (作者) - 写代码是不可能写一辈子的,早日上岸吧!
找到问题了,不是离线打包的问题,打扰了,各位。
iOS中关于热更新问题失败的原因
这次产品改版,热更要加什么下载进度条啥的。这块另外同事做的,改用plus.downloader.createDownload方法。
因为Android上热更没问题,所以,排查思路没往这上面考虑。
原来的更新下载用的方法为(uni):
uni.downloadFile({
该方法下载后的文件可以runtime执行,热更成功。
现在用的是plus.(因为新的弹窗下载样式)
var dtask = plus.downloader.createDownload(this.context.fileUrl, {},(d, status) =>{
iOS中执行runtime会失败。找不到文件。