console.log("开始下载静默更新文件");
const [storagePermissionErr,storagePermissionRes] = await checkStoragePermission();
if(!storagePermissionErr){
const [err, res] = await uni.downloadFile({
url:e.result.url,
timeout:90000 //单位ms
});
if(!err && res.statusCode == 200){
// 下载好直接安装,安装成功后直接重启
plus.runtime.install(res.tempFilePath, {
force: false
}, function(widgetInfo) {
//更新后直接重启
console.log("应用更新完成,开始重启");
setTimeout(function(){
plus.runtime.restart();
},300);
//这里不能加resolve 加了可能让用户看到重启的过程
}, function(error) {
//安装失败也要关闭splash进入app
console.log(JSON.stringify(error));
closeSplashScreen();
reject(error);
});
}else{
//失败 关闭splash进入APP
closeSplashScreen();
reject(err);
}
}else{
// 权限被拒的处理 关闭开屏界面 跳转到弹窗界面提示更新
//失败 关闭splash进入APP
closeSplashScreen();
//修改 is_silently 字段为false 然后跳转到弹窗
e.result.is_silently = false;
//不是静默更新 跳转到自己定义的弹窗
uni.setStorageSync(PACKAGE_INFO_KEY, e.result)
//改为跳转到自己的界面
uni.navigateTo({
url: `/pages/update/upgrade-popup?local_storage_key=${PACKAGE_INFO_KEY}`,
fail: (err) => {
console.error('更新弹框跳转失败', err)
uni.removeStorageSync(PACKAGE_INFO_KEY)
}
});
//回调数据
resolve(e)
}
- 发布:2023-06-13 13:18
- 更新:2023-07-10 10:00
- 阅读:582
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: 10
HBuilderX类型: 正式
HBuilderX版本号: 3.8.4
手机系统: Android
手机系统版本号: Android 10
手机厂商: 小米
手机机型: mix2s
页面类型: vue
vue版本: vue2
打包方式: 离线
项目创建方式: HBuilderX
示例代码:
操作步骤:
app执行热更 下载wgt安装包 安装成功后重新启动
app执行热更 下载wgt安装包 安装成功后重新启动
预期结果:
正常打开APP首页
正常打开APP首页
实际结果:
卡在启动界面没有反应
卡在启动界面没有反应
bug描述:
app热更新下载wgt安装包完成后,调用 plus.runtime.restart();方法重新启动会卡在启动界面没有反应
有几率出现大概20%左右的几率会出现
android studio打印日志如图走到应用更新完成,开始重启 应用卡在启动界面没有反应了
编译wgt包的HbuilderX版本 3.8.4.20230531
线上app的打包版本 android 3.7.7.81739_20230317-alpha
ios 3.1.18
因为我们之前那热更新重来没有遇到过这种问题 像是HbuilderX编译造成的 请您确认下 附件上有完整打印的日志信息
可以加QQ联系 924289941
愿随风丶飘雪 (作者) - 勿在浮沙筑高台
相关连接
https://ask.dcloud.net.cn/question/164699
https://ask.dcloud.net.cn/question/126235