4***@qq.com
4***@qq.com
  • 发布:2026-03-13 16:51
  • 更新:2026-03-13 16:52
  • 阅读:17

uni-app wgt 更新怎么弄的

分类:HBuilderX

uni-app wgt 更新怎么弄的
uni-app wgt 更新怎么弄的
uni-app wgt 更新怎么弄的

WGT安装包中manifest.json文件的version版本不匹配
WGT安装包中manifest.json文件的version版本不匹配
WGT安装包中manifest.json文件的version版本不匹配

2026-03-13 16:51 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

uni-app WGT 热更新出现 "manifest.json 文件的 version 版本不匹配" 通常是因为 WGT 包中的版本号(versionCode/versionName)小于或等于当前 App 已安装的版本号

问题原因

根据知识库信息,WGT 更新时系统会严格比较版本号:

  • WGT 资源包中的 versionCode 为空或小于内置应用的版本时,会导致更新失败或版本回退
  • 必须同时修改 versionNameversionCode,且新版本的值必须严格大于当前安装版本
  • 如果是二次 WGT 更新(之前已经 WGT 更新过,再次 WGT 更新),可能会出现特殊的版本匹配问题

解决方案

1. 检查版本号配置

在生成 WGT 包前,确保 manifest.json 中的版本号已正确提升:

  • 应用版本名称 (versionName):如从 1.0.0 改为 1.0.1
  • 应用版本号 (versionCode):如从 100 改为 101(必须为数字,且必须大于旧版本)

2. WGT 更新实现代码

App.vueonLaunch 中检测升级,确保向服务器传递当前版本号,并验证服务器返回的版本号确实大于本地版本:

// #ifdef APP-PLUS  
plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {  
    uni.request({  
        url: 'http://www.example.com/update/',  
        data: {  
            version: widgetInfo.version,      // 当前 WGT 版本  
            versionCode: widgetInfo.versionCode, // 当前版本号  
            name: widgetInfo.name  
        },  
        success: (result) => {  
            var data = result.data;  
            // 必须确保服务器返回的版本号大于本地版本  
            if (data.update && data.wgtUrl && data.versionCode > widgetInfo.versionCode) {  
                uni.downloadFile({  
                    url: data.wgtUrl,  
                    success: (downloadResult) => {  
                        if (downloadResult.statusCode === 200) {  
                            plus.runtime.install(downloadResult.tempFilePath, {  
                                force: false  // 设置为 true 可以强制安装,但建议保持 false  
                            }, function() {  
                                console.log('install success...');  
                                plus.runtime.restart();  
                            }, function(e) {  
                                console.error('install fail...', e);  
                            });  
                        }  
                    }  
                });  
            }  
        }  
    });  
});  
// #endif

3. 二次 WGT 更新问题

如果是 WGT 更新后再次 WGT 更新出现版本不匹配,可以参考社区解决方案:WGT 二次更新问题处理

推荐使用 uni-upgrade-center

对于生产环境,建议使用官方提供的 App 升级中心 uni-upgrade-center

  • 自动处理版本号比较逻辑(必须同时大于 appVersion 和 wgtVersion)
  • 支持 WGT 热更新和整包更新
  • 支持强制更新、静默更新、下载进度显示
  • 云端管理版本发布,避免手动版本号错误

文档地址:uni-upgrade-center 升级中心

重要注意事项

  1. HBuilderX 版本兼容性:如果之前使用 HBuilderX 版本 < 4.14 打包,现在使用 HBuilderX 版本 >= 4.14,必须整包更新(APK/IPA),不可使用 WGT 更新(因为 4.14 升级了 Vue 版本,低版本基座与高版本 WGT 资源包不兼容)

  2. 版本号规则:WGT 更新要求服务器返回的版本必须同时大于当前 App 版本和当前 WGT 版本(因为上一次可能是 WGT 热更新)

  3. 整包与 WGT 区别

    • WGT 只能更新前端界面功能(uni-app 业务代码)
    • 如果修改了原生插件、AndroidManifest.xml 等原生配置,必须使用整包(APK/IPA)更新
  4. iOS 特别注意:iOS 平台使用 WGT 更新可能违反 Apple 审核政策,审核期间请勿弹窗升级,建议使用静默更新,且升级后尽量不要自行重启

如果问题仍未解决,建议到 ask 社区发帖 并提供具体的版本号对比信息(当前版本号 vs WGT 包中的版本号)。

内容为 AI 生成,仅供参考

要回复问题请先登录注册