效果
快速验证是否可行
首先打包一个版本比当前安卓高的
wgt
版本,可以在首页写一些更新
然后把 wgt 资源放到服务器中,让前端拿到下载地址
主要的热更新逻辑是如下的代码,看看这个是否能生效即可
const updateApp = async () => {
console.log('updateApp:>>')
console.log('updateInfo:>>', updateInfo.value);
if (!updateInfo.value.wgtUrl) {
uni.showToast({
title: '更新包不存在',
icon: 'none'
});
return
}
updateLoading.value = true
const downloadTask = uni.downloadFile({
url: updateInfo.value.wgtUrl,
success: (res) => {
if (res.statusCode === 200) {
console.log('downloadTask, res', res)
updateLoading.value = false
installUpdate(res.tempFilePath);
}
},
fail: (err) => {
uni.showToast({ title: '下载失败', icon: 'none' });
console.error('下载失败:', err);
}
});
// 进度更新
downloadTask.onProgressUpdate((res) => {
updateProgress.value = res.progress;
});
};
// 安装更新
const installUpdate = (tempFilePath: string) => {
// #ifdef APP-PLUS
plus.runtime.install(
tempFilePath,
{ force: false },
() => {
restartFlag.value = true;
setTimeout(() => {
plus.runtime.restart();
}, 1500);
},
(err) => {
uni.showToast({ title: '安装失败', icon: 'none' });
console.error('安装失败:', err);
}
);
// #endif
};
实现步骤
- wgt 的包版本要比当前安装的版本高,否则会报如下错误
{
"code": -1205,
"message": "WGT installation package manifest.json the version of the file does not match"
}