Skip to content

项目简介

xuexiangjys edited this page Apr 26, 2022 · 7 revisions

XUpdate是一个轻量级、高可用性的Android版本更新框架。

本框架充分解耦版本更新的各个环节,将版本更新中的各部分环节抽离出来,这样可最大化地提高框架的可用性和灵活性。同时,为了方便使用,又提供了一套比较通用的默认实现方式,并对Android6.0、7.0、8.0、9.0进行了兼容性适配,最大程度上帮助大家快速实现版本更新功能。

特征

  • 支持post和get两种版本检查方式,支持自定义网络请求。
  • 支持设置只在wifi下进行版本更新。
  • 支持静默下载(后台更新)、自动版本更新。
  • 提供界面友好的版本更新提示弹窗,可自定义其主题样式。
  • 支持自定义版本更新检查器、版本更新解析器、版本更新提示器、版本更新下载器、版本更新安装、出错处理。
  • 支持MD5文件校验、版本忽略、版本强制更新等功能。
  • 支持自定义文件校验方法【默认是MD5校验】。
  • 支持自定义请求API接口。
  • 兼容Android6.0、7.0、8.0、9.0和10.0。
  • 支持中文和英文两种语言显示(国际化)。
  • 支持Flutter插件使用:flutter_xupdate
  • 支持React-Native插件使用:react-native-xupdate

组成结构

本框架借鉴了AppUpdate中的部分思想和UI界面,将版本更新中的各部分环节抽离出来,形成了如下几个部分:

  • 版本更新检查器IUpdateChecker:检查是否有最新版本。

  • 版本更新解析器IUpdateParser:解析服务端返回的数据结果。

  • 版本更新提示器IUpdatePrompter:展示最新的版本信息。

  • 版本更新下载器IUpdateDownloader:下载最新的版本APK安装包。

  • 网络请求服务接口IUpdateHttpService:定义了进行网络请求的相关接口。

除此之外,还有两个监听器:

  • 版本更新失败的监听器OnUpdateFailureListener

  • 版本更新apk安装的监听器OnInstallListener

更新调度核心:

  • 版本更新业务代理IUpdateProxy:负责版本更新的流程控制,调用update开始进行版本更新流程。

更新流程

调用update之后的流程:

IUpdateProxy/XUpdate --- (update) ---> IUpdateChecker --->(请求服务器,获取最新版本信息)---> IUpdateParser ---> (解析服务器返回的数据,并构建UpdateEntity版本更新实体)---> IUpdateProxy ---> (如无最新版本,直接结束,否则进行下面流程)

    ---自动模式---> IUpdateDownloader ---> (下载最新的应用apk) ---> 安装应用

    ---非自动模式---> IUpdatePrompter ---> 给出版本更新的提示

                                                        ---> 用户点击更新 ---> IUpdateDownloader ---> (下载最新的应用apk) ---> 跳转到应用安装界面

                                                        ---> 用户点击(取消或忽略) ---> 结束

设计图

点击查看框架UML设计图