uniapp 自动升级机能
背景
用uniapp做一个app,用离线(即原生框架)进行打包,想实现版本自动升级的功能
环境
安卓手机,安卓pad
方法1:用 uni.downloadFile方法下载到本地之后进行更新
uni.downloadFile({ url: "https://XXXXX/xxxx.apk", success: (res) => { if (res.statusCode === 200) { console.log('下载成功:' + res.tempFilePath); plus.runtime.install(res.tempFilePath, { force:false }, function(){ plus.runtime.restart(); },function(error) { }) } else { console.log(res.statusCode); return ; } }, fail: (res) => { console.log(res) return ; } })
方法2:用【plus.downloader.createDownload】进行下载,之后更新
var dtask = plus.downloader.createDownload( "https://golfdev-s3static.s3.ap-northeast-1.amazonaws.com/tebleorder.apk", {}, function ( d, status ) { // 下载完成 if ( status == 200 ) { plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename),{},{},function(error){ uni.showToast({ title: '安装失败', mask: false, duration: 1500 }); }) } else { uni.showToast({ title: '更新失败', mask: false, duration: 1500 }); } }); dtask.start();
上面的两种方法都可以,但是切记,权限。在uniapp工程下添加下面的权限,否则打包之后会自动重启,但是安装不成功。
上面的权限添加完之后原生的打包的工程也需要添加,在【build.gradle】的文件中看一下下面的数值是否正确
applicationId "XXXXX" minSdkVersion 19 targetSdkVersion 28 //建议此属性值设为28
【AndroidManifest.xml】这个文件中也要添加权限
<uses-permission android:name="android.permission.INSTALL_PACKAGES"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
再生成apk的包就可以实现手动更新了,至于的版本的判断之类的可以自己添加逻辑。
在第一次安装的时候会出现,来源不明的app是否需要安装之类的设定一次,之后就不需要在设定了。安装的时候还是需要手动的点击安装按钮。
如何能实现自动安装,不需要人的参与,再调查中。