本人在autojs是个新萌,大佬请多指教
注意:
包名不一致:系统会认为是个新的软件,这就不算升级了
签名不一致:系统会提示先卸载之前安装的版本,才能继续安装新的(不卸载之前的,提示安装失败)
自动更新
先讲一下思路,我是这样做的,每一个版本都自带一个版本号,这个版本号是自定义的,每一个版本号都不同,相同即时同一个版本,在打开APP时,启动线程检测版本更新,如果有新的版本,则弹出模态框,提示用户,有新的版本需要更新,用户可取消更新,可立即更新。
看看效果图
点击立即下载时的效果
下载完成的效果
实现思路
1:引入我们写的自动更新模块
var UpdateObj = require(files.cwd() + "/uitl/UpdateUtil.js");
2:创建版本号
//当前版本
var version = "2.0.1";
3:创建线程,检测当前版本是否是最新的
//启动版本更新
threads.start(function(){
getVersion();
})
/**
* 启动版本检测
*/
function getVersion() {
//检测网络
try {
var r = http.get("www.baidu.com");
if (r.statusCode == "200") {
startCode = true;
} else {
toast("网络错误,请打开网络重试");
startCode = false;
}
} catch (err) {
toast("网络错误,请打开网络重试");
startCode = false;
}
if (startCode) {
//启动版本检测 url:下载最新app的Url
var versionTh = threads.start(function () {
//自己的版本检测接口
var portName = "";
let redata = HttpUtil.VersionGet(portName, version);
if (redata != null) {
let reObj = JSON.parse(redata);
console.log(reObj);
if (reObj.isSuccess) {
//判断是否有效版本
if(reObj.isUsable){
//判断是否要更新
if(reObj.hasNew == 1){
//打开进行升级
let downUrl = reObj.newDownUrl;
threads.start(function(){
UpdateObj.Open(version, downUrl);
});
}
ifshowversion = true;
}else{
//无效版本
toast(reObj.msg);
ifshowversion = false;
versionText = reObj.msg;
}
} else {
toastLog(reObj.sub_msg);
versionText = reObj.sub_msg;
}
} else {
versionText = "网络发生错误,请检查一下网络";
toastLog(versionText);
}
});
versionTh.join();
}
}
检测手机是否链接网络,请求一下百度,就可以检测出是否链接网络
补充一下js文件下载链接:UpdateUtil.js_autojs自动更新-Android文档类资源-CSDN下载