plus.runtime.install安装apk的坑
发布时间: 2022-01-06 18:52:50
作者: 王乐园 浏览次数:
866
在更新uniapp app大版本的时候,下载文件之后,使用plus.runtime.install方法安装会提示解析包出现错误,搞了一下午,才解决
在平时uniapp开发中使用,热更新的时候,通常会使用 plus.runtime.install 方法来安装,
但是在大版本更新的时候也用 plus.runtime.install 方法来进行安装就会出现问题,不过在大版本更新的时候 使用 uni.openDocument 方法就成功了,
简洁版热更/大版本更新代码献上
// 更新应用资源包(wgt文件)
let installWgt = (path,types) => {
console.log(' 包安装地址', path,types)
// plus.nativeUI.showWaiting("安装wgt文件...");
plus.runtime.install(path, {
force: false
},
function(res) {
// plus.nativeUI.closeWaiting();
console.log("安装文件成功!",res);
uni.removeSavedFile({
filePath: path,
complete: function(res) {
console.log('删除成功', res);
if(types == ''){
plus.runtime.restart();
}else{
console.log('应用资源更新')
plus.nativeUI.alert("应用资源更新完成!", function() {
plus.runtime.restart();
});
}
}
});
},
function(e) {
// plus.nativeUI.closeWaiting();
console.log("安装wgt文件失败", JSON.stringify(e));
// plus.nativeUI.alert("安装wgt文件失败[" + e.code + "]:" + e.message);
});
};
// 下载 wgt文件
let dowWgt = (wgtUrl='') => {
if(wgtUrl == ''){
// 获取版本号
plus.runtime.getProperty(plus.runtime.appid, function(e) {
console.log('获取版本号',e)
// gwt
setTimeout(() => {
appGwtUpdate({
version:e.version,//大版本
versionCode:e.versionCode,//小版本
}).then(res => {
console.log('更新包', res)
if (res.state == 1) {
let clear =null;
if(res.data.type == 'version'){ //大版本更新
console.log('需要大版本更新')
clear = plus.downloader.createDownload(res.data.download_url, {
// filename: "_doc/update/"
}, function(d, status) {
plus.downloader.clear(clear);
if (status == 200) {
console.log('下载内容',d)
uni.openDocument({ // 打开安装apk包
filePath:d.filename,
})
// 这里使用 installWgt 会有问题
// installWgt(d.filename,wgtUrl); // 安装apk包
} else {
console.log("下载wgt失败!");
}
}).start();
}else if(res.data.type == 'versionVCode'){ //小版本更新
console.log('需要小版本更新')
clear = plus.downloader.createDownload(res.data.download_url, {
filename: "_doc/update/"
}, function(d, status) {
plus.downloader.clear(clear);
if (status == 200) {
installWgt(d.filename,wgtUrl); // 安装wgt包
} else {
console.log("下载wgt失败!");
}
}).start();
}
} else {
console.log('不需要 热更新')
}
}).catch(err => {
console.log(err, 'err11')
})
},400)
});
}else{
plus.downloader.createDownload(wgtUrl, {
// filename: "_doc/update/"
}, function(d, status) {
if (status == 200) {
uni.openDocument({
filePath:d.filename,
})
// installWgt(d.filename,wgtUrl); // 安装wgt包
} else {
console.log("下载wgt失败!");
}
}).start();
}
};
注:在这里最后怀疑零时地址不可行,需要转换到本地地址,不过这里没有做测试。
上一篇:(转载)追忆过往青春
下一篇:(转载)时光悠悠 岁月无言