uni-app的热更新(安卓)

    技术2022-07-16  96

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

    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),都要比正式当前的版本高

     

    Processed: 0.012, SQL: 9