hbuilder 开发app 自动升级
使用huilder 开发app ,实现app升级功能
1、
var wgtVer = null; //用于获取系统当前版本
var currentversion = null; //用于获取系统最新版本
var installpackegename = null; //用于存储安装包名称
//检测手机版本
(function($, doc) {
$.plusReady(function() {//获取手机版本号
plus.runtime.getProperty(plus.runtime.appid, function(inf) {
wgtVer = inf.version + ""; //获取当前app的版本号
checkUpdate();
});
});
}(mui, document));
function checkUpdate() {
//获取服务器的最新版本,在后台使用一个表来记录版本信息、安装包名称
$.ajax({
url: localStorage.getItem('server') + 'report_sysMainTableQuery4lyga',
type: 'post',
data:{} //已删除
timeout: 50000,
dataType: 'json',
success: function(res) {
if(!res['Returnvalue'] && res['Rowscount'] > 0) {
currentversion = res['MyDataTable'][0]["最新版本"] + "";
installpackegename = res['MyDataTable'][0]["安装包名称"] + "";
var btn = ["是", "否"];
//直接判断老是不起作用,所以转换成为数值来判断了
currentversion = currentversion.replace(/\./g, '');
wgtVer = wgtVer.replace(/\./g, '');
if(currentversion > wgtVer) //比对版本号
{
mui.confirm("检测到新版本,是否更新", "更新应用", btn, function(e) {
if(e.index == 0) { //确定更新应用
var Url = localStorage.getItem('server1') + "APK/" + installpackegename; /*下载页,资源路径*/
var watiting = plus.nativeUI.showWaiting("开始");
plus.downloader.createDownload(Url, {
filename: "_doc/update/"
}, function(d, status) {
if(status == 200) {
installWgt(d.filename); // 安装wgt包
} else {
console.log("下载wgt失败!");
plus.nativeUI.alert("下载wgt失败!");
}
plus.nativeUI.closeWaiting();
}).start();
} else {
return;
}
})
}
}
}
});
}
installWgt方法:
function installWgt(path) {
plus.nativeUI.showWaiting("安装文件...");
plus.runtime.install(path, {}, function() {
plus.nativeUI.closeWaiting();
console.log("安装文件成功!");
plus.nativeUI.alert("应用资源更新完成!", function() {
plus.runtime.restart();
deleteysb(path);
});
}, function(e) {
plus.nativeUI.closeWaiting();
console.log("安装wgt文件失败[" + e.code + "]:" + e.message);
plus.nativeUI.alert("安装wgt文件失败[" + e.code + "]:" + e.message);
deleteysb(path);
});
}
//删除安装包
function deleteysb(filename) {
plus.io.resolveLocalFileSystemURL(filename, function(entry) {
entry.remove();
mui.toast("删除安装包成功");
})
}
2、下载,升级的代码基本都一样,下载升级前要确认要下载的地址能不能访问。 服务通过iis发布,需要在iis配置中 MIME类型 添加wgt/application/widget 和 整包升级的 apk/application/vnd.android.package-archive
3、使用hbuilder 制作移动资源升级包,安装的时候如果提示:安卓在线升级时,manifest.json无修改却报-1229错误。()
如果没有用到maps模块,可以直接删除,再制作升级包就可以了。