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的热更新功能。

  1. 前面几步,检测更新,下载更新包,安装更新包都没有问题
  2. 安装完wgt包后,执行plus.runtime.restart(),肉眼可见APP确实重启了,但是重启后展示的依然是原版本的内容,更新包的内容不起作用。
  3. 只有手动关掉应用进程并再次打开时,更新包的内容才可以正确展示。

预期结果:

安装好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

9 回复

我连restart都没有,也显示了新内容

更多关于uni-app打包安卓采用wgt热更新时 下载并安装wgt包后 执行plus.runtime.restart重启 增量包内容未出现的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我这里试了三个手机,小米的华为的oppo的,都不好使。只有手动关进程再打开才生效。

请问作者解决这个问题了吗?

一直就是这个问题,官方不解决,也不认为是问题。。毫无办法

回复 8***@qq.com: 你好,请问你解决了吗,我现在也出现这个问题,之前都不会,突然出现的

我最近也出现了这个问题 之前一直都能热更新 现在要重启很多次 才能显示新的wgt包的内容

restart 感觉问题挺多,restart 的重启只是重新加载。
无奈搞了个插件 mt-device-info,支持重启和杀掉进程重启,目前审核还没过

同样问题

这是一个已知的wgt热更新在Android平台上的常见问题。plus.runtime.restart()在某些Android系统版本中可能无法完全清理应用进程,导致重启后仍加载旧缓存。

建议改用以下方案:

  1. 强制关闭应用
plus.runtime.quit()
  1. 延迟重启方案
setTimeout(() => {
    plus.runtime.restart()
}, 100)
  1. 检查wgt包完整性: 确保wgt包中的文件路径和命名与基座包完全一致,特别是静态资源文件。

  2. 验证版本号: 在安装成功后,通过plus.runtime.version确认版本号是否已更新。

  3. 清除缓存: 在安装前可尝试清除webview缓存:

plus.webview.all().forEach(webview => {
    webview.reload(true)
})
回到顶部