2019-10-22
关键字:APK 通过代码安装程序、APK 更新、打开APK安装程序、APK的升级
这篇文章是基于笔者的另一篇 APK 升级相关的文章(如何实现APK的升级功能)的改进版本。
主要改进的点如下:
1、新增了兼容高低版本系统安装APK功能
2、改进了定时检测流程;
3、改进了提示流程;
4、改进了存储逻辑,兼容多种类型手机,避免出现权限不足的问题。
5、区分了普通升级与强制升级功能。
1、概述
所谓热更新就是 APK 自动升级的一种较好听一点的说法而已。一款APK若能摆脱手机系统应用商店的依赖而仅依靠自己来实现升级,就称为热更新。
APK 的升级由于需要在程序运行期间,有些甚至在程序在后台运行时都要进行。因此通常都会把升级功能做在一个后台服务子线程上。
而我个人目前写代码的理念崇尚“专人专事”,用专业的话来说就是“高内聚”。因此我将整个升级相关的功能代码都封装在同一个 Service 代码文件中。虽然它内部其实夹杂着不少不同类型的功能代码,但所幸整个代码文件也并不庞大,同时对于升级功能的管理也特别轻松。
对于APK的升级,我个人之前从未参考过其他人的实现方法。我自己对于升级的理解就是有一个后台线程在程序运行期间不间断地定时向升级服务器检索升级信息,当有新版本时,发出提示供用户选择下载与否。并且我认为升级应该至少设置两种升级策略:一是普通升级。二是强制升级。普通升级不必多说,强制升级就是当检测到有强制升级包时,立即在后台下载该更新包,下载完毕后即弹出软件安装界面,并缩短强制升级检测时间间隔。若用户取消安装强制升级包,则在一个较短的时间内再次弹出安装界面。通过这种“死皮赖脸”的方