安卓app更新有两种:uniapp热更新和整体更新(自己简称)。热更新就是用uniapp自带的打包方式打一个.wgt的包,整体更新就是正常云打包一个.apk文件。他俩大概的区别就是,热更新会直接在app内更新,更新完之后直接重启app,不会跳转到一个安装页面;整体更新的话,会跳转到一个安装页面,然后选择是否要安装,把整个app重新安装一遍。(自己理解的)
1、manifest.json权限配置
注:这几个权限我不确定是否必须要勾选,因为我在开发的时候plus.runtime.install没有跳转,所以就在网上搜,说是这几个权限没有打开,但是其实我当时是用的热更新,当时还不理解两者的区别,所以,如果在用.apk的包进行更新是如果没有跳转,可以把这几个权限打开试一下。
2、在APP.vue文件的onLaunch中判断。
(1)用当前的版本号和服务器的最新的版本号进行对比(需要后台提供当前最新的版本号)
如果当前的版本号小于服务器的版本号,那就是有版本更新,代码如下,可以自行打印一下试试,wgtinfo里面包含了当前的一些版本信息。
数据内容:
对比之后发现有更新,用uni.downloadFile处理后台的给的url(最新的安装包链接):
就像文件上传,uni.downloadFile会处理之后返回一个temFilePath,这个就是要用到的新安装包处理后的链接,然后用plus.time.install去处理这个链接,如果是.apk包,在这里更新会跳转到一个提示安装的页面,如果是.wgt不会跳转直接在打开的app内更新然后重启。
如果在app内安装失败,给个提示去浏览器安装
重点:!!!!!!!!!!!
在打.wgt包的时候,这俩一定要比服务器上的版本号和版本名称小才可以安装成功,不然会报下面的错.
如果是开发完之后要测试,那就先安装一个包,然后把版本名称和应用版本号改一下,最好是改大一下然后再上传到服务器才可以测,如果先把最新的放上去,然后又安装小版本就会安装不上提示已经有最新版本,一定要注意如果要测试手机先把要测试的旧版本安装上!!!!!!!!!!