版权声明:本文为博主原创文章,未经博主允许不得转载。 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进行页面切换就多半会失败, 将输入法换为其他输入法就能彻底解决****