admin管理员组

文章数量:1600461

热更新的好处就不说了,直接上干活(安卓为例)

1,我是用HBuilderX生成的uni-app项目,然后打包成apk。(HBuilderX版本是2.7.14)

2,热更新的思路

    (1)项目中有当前版本号(currentVersionID),服务器端有接口提供最新版本号(newVersionID)

    (2)每次进入应用,用当前版本号和最新版本号做对比,如果不一致,就进行更新

    (3)下载wgt资源包,安装,重启

3,下边是上边三个步骤的实现

    (1)main.js中定义一个全局的变量或常量

import Vue from 'vue'
import App from './App'
const currentVersion = {
    verson: 101   //代表当前项目的版本
}
Vue.config.productionTip = false
Vue.prototype.$current = currentVersion  //挂载到抢钱vue示例的原型上,方便全局访问
App.mpType = 'app'

const app = new Vue({
    ...App
})
app.$mount()

(2)在App.vue的onLaunch方法中,进行版本的判断

onLaunch: function() {
        const me = this
        // #ifdef APP-PLUS  
        //1,从main.js中拿到当前的版本号
        let myVerson = me.$current.verson
        uni.request({
            url: 'http://11.11.11.11:9999/lastLabor/external/getVersion', //仅为示例,并非真实接口地址。
            method: 'GET',
            success: (res) => {
                let newVerson = Number(res.data.version)
                if (myVerson < newVerson) { //如果我的版本号小于当前版本号
                    plus.nativeUI.toast("下载wgt文件...");
                    me.downWgt() //下载wgt文件的方法
                } else {
                    console.log('不需要更新')
                }
            }
        });
        // #endif
    }

(3)下载wgt资源包,安装,重启(methods中定义下载和安装方法)

methods:{
        downWgt() { //下载安装包
            const me = this;
            var wgtUrl="https://www.xxx.xxx/iwop/apk/__UNI__0D0B797.wgt";  //下载wgt安装包的地址
            plus.downloader.createDownload( wgtUrl, {filename:"_doc/update/"}, function(d,status){  
                if ( status == 200 ) {   
                    //plus.nativeUI.toast("下载wgt成功:"+d.filename); 
                    plus.nativeUI.toast("下载wgt文件成功,安装中");
                    me.installWgt(d.filename); // 安装wgt包  
                } else {  
                    plus.nativeUI.toast("下载wgt失败!");  
                }  
                plus.nativeUI.closeWaiting();
            }).start();  
        },
        installWgt(path) {  //更新资源包
            plus.runtime.install(path,{},function(){  
                plus.nativeUI.toast("应用资源更新完成!",function(){  
                    plus.runtime.restart();
                });  
            },function(e){  
                plus.nativeUI.toast("安装wgt文件失败["+e.code+"]:"+e.message);  
            });  
        }
    }

注意

生成wgt资源包,菜单 ==> 发行 ==> 原生App-制作应用wgt包

制作这个包的时候manifest.json的应用版本名称(例如1.0.1)和应用版本号(100),都要比正式当前的版本高

 

本文标签: Uniapp