uni-app 热更新失败 提示"WGT安装包中manifest.json文件的version要高于现有版本号"

发布于 1周前 作者 yibo5220 来自 Uni-App

uni-app 热更新失败 提示"WGT安装包中manifest.json文件的version要高于现有版本号"

信息类别 信息内容
产品分类 uniapp/App
PC开发环境 Windows
PC系统版本 windows 11
手机系统 iOS
手机版本 iOS 18
手机厂商 苹果
手机机型 Iphone 14
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 CLI
CLI版本号 3.0.0-4020420240722002

操作步骤:

  • 热更新

预期结果:

  • 正常更新

实际结果:

bug描述:

手机中原生version=160,versionName=1.7.20
升级wgt包版本:1.7.21

检测到更新之后,进行下载安装(检查过wgt包没问题),提示以下内容:
“请重新下载WGT安装包中manifest.ison 文件的version要高于现有版本号, https://ask.dcloud.net.cn/article/282

重启应用后加载正常,版本号也变成了最新的wgt版本-1.7.21


1 回复

针对您提到的uni-app热更新失败问题,提示“WGT安装包中manifest.json文件的version要高于现有版本号”,这通常意味着您尝试安装的热更新包版本号没有正确设置,导致其版本号不大于或等于当前应用的版本号。为了解决这个问题,我们需要确保在打包热更新包时,manifest.json文件中的version字段值高于当前应用的版本号。

以下是一个简化的操作流程和代码示例,说明如何检查和修改manifest.json中的版本号,以及如何进行热更新包的打包和发布。

1. 检查并更新manifest.json中的版本号

首先,打开您的uni-app项目的manifest.json文件,找到version字段。例如:

{
  "mp-weixin": { // 或其他平台配置
    "appid": "your-app-id",
    "setting": {
      // 其他设置
    }
  },
  "version": {
    "name": "1.0.1", // 当前版本号
    "code": 101      // 版本代码,通常用于数字比较
  }
}

假设当前应用的版本号是1.0.1code为101),那么您的新热更新包版本号应该设置为1.0.2code为102)或更高。

2. 打包热更新包

在更新manifest.json后,使用HBuilderX或命令行工具打包WGT文件。这里以HBuilderX为例:

  • 打开HBuilderX,选择您的项目。
  • 点击“发行”->“网站-H5+App(流应用)”->“制作更新WGT包”。
  • 确保选中正确的输出目录,然后点击“打包”。

3. 发布热更新包

打包完成后,将生成的WGT文件上传到您的服务器。然后,在您的应用中实现检查更新逻辑,通常这涉及到发送网络请求到您的服务器,获取最新的版本号信息,并下载新的WGT包。

示例代码(伪代码)

// 假设有一个API返回最新的版本信息
fetch('https://yourserver.com/version-info')
  .then(response => response.json())
  .then(data => {
    const newVersion = data.version.code;
    const currentVersion = plus.runtime.versionNumber; // 获取当前应用版本号
    if (newVersion > currentVersion) {
      // 下载并安装新版本的WGT包
      const wgtUrl = `https://yourserver.com/path/to/your-app-${newVersion}.wgt`;
      plus.runtime.install(wgtUrl, {}, (e) => {
        if (e.code === 0) {
          console.log('热更新成功');
        } else {
          console.error('热更新失败', e.msg);
        }
      });
    } else {
      console.log('已是最新版本');
    }
  });

确保您的服务器逻辑正确返回最新的版本信息,并且WGT文件的路径正确无误。这样,当新版本发布时,用户的应用将能够自动检测到并应用热更新。

回到顶部