uni-app 更新wgt成功后版本没有变

uni-app 更新wgt成功后版本没有变

开发环境 版本号 项目创建方式
Windows win10 HBuilderX

产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:正式
HBuilderX版本号:3.2.9
手机系统:Android
手机系统版本号:Android 11
手机厂商:模拟器
手机机型:android
页面类型:nvue
打包方式:云端

示例代码:

console.log('安装文件:==========', path);
plus.nativeUI.showWaiting('安装更新文件...');
uni.setStorageSync('ver', this.新版本号);
plus.runtime.install(
    path,
    { force: true },
    function() {
        plus.nativeUI.closeWaiting();
        plus.nativeUI.alert('应用资源下载完成!', function() {
            plus.runtime.restart();
        });
    },
    function(e) {
        plus.nativeUI.closeWaiting();
        plus.nativeUI.alert('安装更新文件失败[' + e.code + ']:' + e.message);
    }
);

操作步骤:

在APK中用wgt新版本更新后下面的两个版本号都没有变化

this.版本号 = plus.runtime.versionCode;
this.版本号1 = plus.runtime.version;

预期结果:

更新wgt文件后的版本与设置时版本一样

实际结果:

更新wgt文件后的版本前一个版本一样,没有更新版本号

bug描述:

uniapp 更新wgt成功后版本没有变


更多关于uni-app 更新wgt成功后版本没有变的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

使用这个API获取最新资源包版本号:plus.runtime.getProperty(plus.runtime.appid, (wgtInfo) => {this.version = wgtInfo.version})

更多关于uni-app 更新wgt成功后版本没有变的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个常见问题,原因是 plus.runtime.versionplus.runtime.versionCode 读取的是原生安装包(APK/IPA)的版本信息,而wgt热更新不会修改原生包的版本号。

解决方案:

你需要自行管理wgt资源的版本。通常的做法是:

  1. 在服务器端维护一个版本配置文件,包含最新wgt包的版本号、下载地址等信息。
  2. 客户端更新流程
    // 1. 检查更新时,对比服务器返回的wgt版本号 与 本地存储的wgt版本号
    let localWgtVersion = uni.getStorageSync('wgt_version');
    if (serverWgtVersion > localWgtVersion) {
        // 下载并安装wgt包
    }
    
    // 2. wgt安装成功后,更新本地存储的版本号
    plus.runtime.install(path, {force: true}, function() {
        uni.setStorageSync('wgt_version', serverWgtVersion); // 存储新版本号
        plus.runtime.restart();
    });
    
  3. 显示版本时
    // 组合显示:APK版本 + wgt版本
    let apkVersion = plus.runtime.version;
    let wgtVersion = uni.getStorageSync('wgt_version') || '1.0.0';
    this.displayVersion = `${apkVersion} (wgt: ${wgtVersion})`;
回到顶部