MUI学习笔记: 环境的搭建/app升级处理/自定义基座...

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rocklee/article/details/88335356

1/ 用网上提供的自定义基座转为Android studio 项目,我的做法是在这个项目下建立5+app的源代码文件夹如下图:

2/下载最新的HBuilderX, 打开上图中的源代码文件夹,然后右键识别为app, 用HBuilderX写代码/调试

3/增加升级代码upgrader.js

(function(owner) {
	owner.updateurl="http://yoursite/ads/api/ADS900V1.jsp?project_id=";
	owner.newVer=null;//若不为null则表示这是发现的新版本
	doUpdate=function(pvsUrl){
		//mui.alert("doUpdate:"+pvsUrl);
		mui.toast("正在下载新版本...");
		console.log("download "+pvsUrl);
		var options = {method:"GET"};
        var lvTask = plus.downloader.createDownload(pvsUrl,{
            filename:"_doc/download/" },function(download,status){
            plus.io.resolveLocalFileSystemURL(download.filename,function(entry){
                console.log("下载成功");
                installUpdate(download.filename);
            });
        });
        lvTask.start();
	};

	installUpdate=function (pvsFileName){
		plus.nativeUI.showWaiting("正在更新...");  
	    plus.runtime.install(pvsFileName,{},function(){  
		plus.nativeUI.closeWaiting();  
		console.log("更新成功!");  
		plus.nativeUI.alert("应用资源更新完成!",function(){  
			plus.runtime.restart();  
		});  
	},function(e){  
		plus.nativeUI.closeWaiting();  
		console.log("更新文件失败["+e.code+"]:"+e.message);  
		plus.nativeUI.alert("更新文件失败["+e.code+"]:"+e.message);  
	});  
	}
	owner.checkUpdate=function(pvsAppid,pvDisableCallBack){
		console.log("appid:"+pvsAppid);
		mui.getJSON("manifest.json",null,function(data){
			var lvVerInfo={appid:pvsAppid,num:data.version.code};			
			_checkUpdate(lvVerInfo,pvDisableCallBack);
		});
	}
	
	/***
	   pvCurVer:{appid:"YOURID",ver:"app version"}
	***/
	_checkUpdate=function(pvCurVer,pvDisableCallBack){
		console.log("current appid:"+pvCurVer.appid);
		console.log("version:"+pvCurVer.num);
	  var lvsUrl=owner.updateurl+pvCurVer.appid;
	  console.log("check new version: "+lvsUrl);
	  mui.ajax(lvsUrl,{
	  	dataType:'json',//服务器返回json格式数据
	  	type:'GET',//HTTP请求类型
	  	timeout:10000,//超时时间设置为10秒;
	  	success:function(data){
			//console.log(data);
	  		if (!data) {
				return;
			}
			if (data.ret==0){
				mui.toast(data.message);
			}
			else if (data.ret==1){
				if (data.active!=1){
					pvDisableCallBack();
				}
				else{
					if (data.version>pvCurVer.num){
						owner.newVer=data.version;
						if (data.utype=="C"){
							doUpdate(data.url);
						}
						else{
							mui.confirm('发现新版本,是否更新?','升级提醒',['取消','确认'],function (e) {
								if (e.index==1){
									doUpdate(data.url);
								}
							},'div');
						}
					}
				}
			}
	  	},
	  	error:function(xhr,type,errorThrown){
	  		//owner.networkError(type,errorThrown,callback);
	  	}
	  });
	}
}(window.upgrader={}));

在app首页的plusready中增加如下代码, checkUpdate传入的是自已指定的appid而不是plus.runtime.appid,原因在于用调试基座时,plus.runtime.appid一直传入的是HBuilderX,所以要自已指定.

console.log(" index.html plusready");
					console.log("appid:"+plus.runtime.appid);
					plus.runtime.getProperty(plus.runtime.appid,function(wgtInfo)
					{
					  var lvVer=wgtInfo.version;
					  console.log("version:"+lvVer);
					  mui("#lblVersion")[0].innerText=lvVer;					
					}
					);
					upgrader.checkUpdate(app.appid,function(){
						mui.confirm('此应用被禁止,请联系管理员', 'BMS App', [label.OK], function(e) {
							plus.runtime.quit();
						})
					});

4. 调试完毕后, 生成本地打包资源

5.再将resource/yourapp/www这个文件夹剪到android studio 项目的assets/yourapp/下, yourapp文件夹一定要和你的appid相同

6.修改appid

7.编译制造apk, 第一次制造appk完毕

8.若需要更新代码  , 则用HBuilderX修改,然后更新下面这两个版本信息,然后制造资源升级包, 再上传至自已的升级服务器

****最新的MUI的底层还是和Google自带的输入法有冲突, 用自带的输入法输入一些内容之后, 用mui.openWindow进行页面切换就多半会失败, 将输入法换为其他输入法就能彻底解决****

猜你喜欢

转载自blog.csdn.net/rocklee/article/details/88335356