1.前言
Android app更新是app必须拥有的功能,上线之后,可以强制用户更新也可以提示用户有新版,之所以写这篇文章,是为了介绍app版本更新的思路,内容还是比较简单的。
有人可能会说,现在比较了流行Hotfix也就是热更新技术,无论是阿里的Sophix、还是微信的Tinker,热更新主要通过推送补丁的方式,为已经上线的app推送补丁,用户不需要重新安装,可以自动拉取补丁,解决线上的一些bug,但是目前热修复技术都不支持新增四大组件,我们只能在应用内微调,基本无法满足版本的更新,如果哪一天热修复技术支持新增四大组件了,那估计web app的优势又少了一个。
2. app 版本更新思路
app版本检测更新,可以让用户点击版本更新检测,也可以启动app时自动检测更新,视应用需求而定。
启动app时,获取当前app版本名称和版本号,与数据库中的版本名称对比,如果数据库中的版本号大于当前应用的版本号,则说明当前版本待更新,也就是说,当我们发布一个新的版本之后,需要在数据库中录入最新版本的版本号以及下载地址。
3.数据库设计
建立一张数据库版本信息表(顺便吐槽一下,自从正式进入公司做了Android开发,几乎接触不到后台的东西,所以建议之前前后*立开发的小伙伴继续坚持下去,否则路会越走越窄)
version是版本号,url是最新app下载地址,content是更新内容
4.获取当前应用版本号
请求服务端数据,判断当前是否为最新版本,这里给出简易服务端代码,网络请求框架大家选个自己喜欢的。
获取最新的一条版本记录,客户端接收与当前版本对比,如果不一致则通过最新url下载最新的(最好有个对话框弹出提示)相信这部分代码对大家而言都很简单了,现在才发现自己的这部分代码当初是用的volley网络请求和kotlin语言实现的,就只贴图了:
5.下载最新apk并自动安装
showUpdateDialog()方法是显示一个对话框提示用户有新版本更新,用户点击确定后,下载apk然后自动安装,这里具体说下载和自动安装:
这里下载使用的是xutils下载
然后最主要的自动安装apk文件
至此版本更新就完成了,这部分代码使用的是kotlin,对于习惯java开发的可能不是特别友好,这里主要提供一种思路,如有不足之处,请多多指教。