uni-app打包安卓采用wgt热更新时 下载并安装wgt包后 执行plus.runtime.restart重启 增量包内容未出现
uni-app打包安卓采用wgt热更新时 下载并安装wgt包后 执行plus.runtime.restart重启 增量包内容未出现
项目 | 信息 |
---|---|
产品分类 | uniapp/App |
PC开发环境操作系统 | Windows |
PC开发环境操作系统版本号 | win10 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 3.1.2 |
手机系统 | Android |
手机系统版本号 | Android 10 |
手机厂商 | 华为 |
手机机型 | 所有手机 |
页面类型 | vue |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
示例代码:
uni.downloadFile({
url: baseUrl + url,
success: downloadResult => {
if (downloadResult.statusCode === 200) {
plus.runtime.install(
downloadResult.tempFilePath,
{
force: true
},
function() {
console.log('install success...');
plus.runtime.restart();
},
function(e) {
console.error('install fail...');
}
);
}
}
});
操作步骤:
按官方的文档,添加APP的热更新功能。
- 前面几步,检测更新,下载更新包,安装更新包都没有问题
- 安装完wgt包后,执行plus.runtime.restart(),肉眼可见APP确实重启了,但是重启后展示的依然是原版本的内容,更新包的内容不起作用。
- 只有手动关掉应用进程并再次打开时,更新包的内容才可以正确展示。
预期结果:
安装好wgt后,执行plus.runtime.restart方法,应用重启后应该正确展示更新后的内容。
实际结果:
安装好wgt后,执行plus.runtime.restart方法,应用重启后仍然展示的是未更新前老版本的内容
bug描述:
uniapp打包安卓APP,采用wgt热更新时,下载并安装wgt包后,执行plus.runtime.restart重启,增量包的内容没有出现。只有手动去关闭应用进程,然后再次打开应用,才能正确展示更新包内容。
更多关于uni-app打包安卓采用wgt热更新时 下载并安装wgt包后 执行plus.runtime.restart重启 增量包内容未出现的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我连restart都没有,也显示了新内容
更多关于uni-app打包安卓采用wgt热更新时 下载并安装wgt包后 执行plus.runtime.restart重启 增量包内容未出现的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我这里试了三个手机,小米的华为的oppo的,都不好使。只有手动关进程再打开才生效。
请问作者解决这个问题了吗?
回复 8***@qq.com: 你好,请问你解决了吗,我现在也出现这个问题,之前都不会,突然出现的
restart 感觉问题挺多,restart 的重启只是重新加载。
无奈搞了个插件 mt-device-info,支持重启和杀掉进程重启,目前审核还没过
同样问题
这是一个已知的wgt热更新在Android平台上的常见问题。plus.runtime.restart()
在某些Android系统版本中可能无法完全清理应用进程,导致重启后仍加载旧缓存。
建议改用以下方案:
- 强制关闭应用:
plus.runtime.quit()
- 延迟重启方案:
setTimeout(() => {
plus.runtime.restart()
}, 100)
-
检查wgt包完整性: 确保wgt包中的文件路径和命名与基座包完全一致,特别是静态资源文件。
-
验证版本号: 在安装成功后,通过
plus.runtime.version
确认版本号是否已更新。 -
清除缓存: 在安装前可尝试清除webview缓存:
plus.webview.all().forEach(webview => {
webview.reload(true)
})