5***@qq.com
5***@qq.com
  • 发布:2022-06-16 02:47
  • 更新:2022-06-16 09:11
  • 阅读:1085

【报Bug】App端(安卓,ios)wgt包热更新,版本号一直是旧的版本号

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 1703

HBuilderX类型: 正式

HBuilderX版本号: 3.3.5

手机系统: 全部

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

测试过的手机:

oppo,vivo,小米

示例代码:
// 0:更新wgt。1:更新apk。  
        case 0: case 1:  
            let task = uni.downloadFile({  
                url: updateRes.mode === 0 ? updateRes.wgt : updateRes.pkg,  
                success: (downloadResult) => {  
                    if (downloadResult.statusCode === 200) {  
                        plus.runtime.install(downloadResult.tempFilePath, {}, function() {  
                            if (!updateRes.silent || updateRes.force) {  
                                // 非静默模式 || 强制升级  
                                plus.nativeUI.closeWaiting()  
                                if (updateRes.force == 2) {  
                                    plus.nativeUI.alert("应用资源更新完毕,请手动重启应用", function(){  
                                        plus.runtime.quit();  
                                    }, "更新完成", "关闭");  
                                    return  
                                }  
                                plus.runtime.restart()  
                            }  
                        }, function(e) {  
                            console.error('install fail...', JSON.stringify(e))  
                            if (!updateRes.silent || updateRes.force) plus.runtime.restart()  
                        })  
                    }  
                }  
            })  
            // 非静默模式 || 强制升级模式  此时需要显示下载进度  
            if (!updateRes.silent || updateRes.force) {  
                let progress=0, waitObj=plus.nativeUI.showWaiting("准备开始");  
                task.onProgressUpdate((res) => {  
                    progress = res.progress;  
                    waitObj.setTitle('下载进度:' + res.progress);  
                    if (res.progress === 100) {  
                        checkFlag = false  
                        waitObj.close()  
                        waitObj = null  
                    }  
                })  
            }  
            break

操作步骤:

打开app,执行热更新检查,执行对应更新逻辑。

预期结果:

更新到wgt包资源对应的版本,切能正常使用。

实际结果:

无限进行热更新。

bug描述:

在Android、Ios端进行热更新,更新后通过plus.runtime.getProperty获取的version,和通过plus.runtime.version获取的都是旧版本值。导致热更无限进行。
应用版本名称:5.1.2
应用版本号:50001002

wgt包中:
应用版本名称:5.1.4
应用版本号:50001004

2022-06-16 02:47 负责人:无 分享
已邀请:
BoredApe

BoredApe - 有问题就会有答案。

plus.runtime.getProperty获取的是更新后wgt包中的version如果没有安装成功还是之前的版本 plus.runtime.version获取的是基座包的版本

  • 5***@qq.com (作者)

    安装成功了,我特意在更新后关闭了热更配置,并查看了下页面,里面有wgt包更新的内容,所以应该是安装成功了,而且查看了wgt包中的mainfest.json文件下的版本,是高于旧版的。

    2022-06-16 09:30

  • BoredApe

    回复 5***@qq.com: 上传检测更新代码和接口返回的数据包

    2022-06-16 09:34

  • 5***@qq.com (作者)

    回复 BoredApe: 已上传更新代码和更新资源包上传成了zip格式的

    2022-06-16 09:57

  • BoredApe

    回复 5***@qq.com: 上传成功了吗?是否插入到页面中

    2022-06-16 09:59

  • 5***@qq.com (作者)

    回复 BoredApe: 资源包放到了附件中

    2022-06-16 10:03

  • 5***@qq.com (作者)

    热更新中进行版本检测的时候,应当使用plus.runtime.getProperty获取版本还是使用plus.runtime.version获取版本号?我刚才试了下,当使用plus.runtime.getProperty获取的版本号进行检测时,获取的是更新后的版本,使用plus.runtime.version获取的是旧的版本号,所以这两个在热更新时应该使用哪个?不太清楚这两个具体的区别,更新后wgt包中的版本不就应该是基座的版本了吗?

    2022-06-16 11:01

  • BoredApe

    回复 5***@qq.com: 热更新使用plus.runtime.getProperty中的版本号 基座的版本号每次打包app(重新安装)后才会改变

    2022-06-16 11:04

该问题目前已经被锁定, 无法添加新回复