uniappwgt官方热更新如何使用

我在使用uniapp的wgt热更新功能时遇到了一些问题,不太清楚具体的操作流程。官方文档看得不是很明白,想请教下大家:1)如何正确生成wgt更新包?2)在客户端应该如何检测和下载更新?3)更新过程中需要注意哪些关键点?希望能结合具体案例说明下完整的实现步骤。

2 回复

使用HBuilderX打包wgt包,通过uni.downloadFile下载wgt文件,再调用uni.installWgt安装即可。注意版本号需大于当前版本,且需配置manifest.json中的更新地址。


UniApp 的 WGT 热更新允许用户在不重新安装应用的情况下更新资源或部分代码。以下是基本使用步骤:

  1. 生成 WGT 包
    在 HBuilderX 中,选择「发行」→「制作 wgt 包」,生成 .wgt 文件。

  2. 上传 WGT 包
    .wgt 文件上传到你的服务器,并记录下载地址。

  3. 客户端检测更新
    在 App 启动时,检查服务器是否有新版本。示例代码:

    // 在 App.vue 的 onLaunch 中
    plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
      const currentVersion = widgetInfo.version; // 当前版本
      // 请求服务器,对比版本(需自行实现)
      uni.request({
        url: 'https://your-server.com/check-update',
        data: { version: currentVersion },
        success: (res) => {
          if (res.data.hasUpdate) {
            this.downloadWgt(res.data.wgtUrl);
          }
        }
      });
    });
    
  4. 下载并安装 WGT
    使用 plus.downloader 下载并安装:

    downloadWgt(wgtUrl) {
      const task = plus.downloader.createDownload(wgtUrl, {}, (d, status) => {
        if (status === 200) {
          plus.runtime.install(d.filename, {}, () => {
            uni.showToast({ title: '更新完成,重启生效', icon: 'none' });
            // 可调用 plus.runtime.restart() 立即重启
          }, (e) => {
            console.error('安装失败:', e);
          });
        } else {
          console.error('下载失败:', status);
        }
      });
      task.start();
    }
    

注意事项

  • 范围限制:WGT 更新仅适用于非原生代码(如页面、样式、JS),无法更新原生插件或 manifest 配置。
  • 版本管理:确保服务器返回正确的版本信息和 WGT 包地址。
  • 权限:Android 需配置存储权限。
  • 测试:更新前务必充分测试,避免资源错误导致白屏。

通过以上步骤,即可实现 UniApp 的 WGT 热更新功能。

回到顶部