文章目录

    • 写在前面
    • 示例
    • 功能介绍
    • 用法
    • 实现
      • 版本更新提示框
      • 下载
      • 安装
    • 短期内更新计划
    • 感谢

写在前面

Github上优秀的版本更新框架很多,推荐大家去阅读去使用,我就从中受益良多。

有这么多优秀的版本更新框架了,我为什么还要造轮子呢?

有这么几方面考虑:

1、这些优秀的版本更新框架,基本都规定了版本更新接口的交互细节,包括提交的参数、返回的数据及其格式等。
这就要求server端的接口要随着app端选用的版本更新框架的不同而调整,这就不大合适了。
2、写这个库的初衷是要用于公司内部的几个app,便于app端统一风格,server端统一接口,还是自己造的轮子更方便定制和改版了。
3、想要尽量精简库的体积,尽量去除无用代码。

github源码地址:https://github.com/ZuoHailong/AppUpdate (文后附的还有链接)

示例

功能介绍

  • 支持指向apk文件的 url 形式的版本更新

  • 支持指向接口、接口返回二进制文件流的 url 形式的版本更新

  • 支持断点下载

  • 采用 Service + AsyncTask 方式下载

  • 提供界面友好的版本更新提示弹窗,可自定义其主题样式

  • 兼容Android 6.0,更新库自动获取写权限,用户拒绝后可再次请求

  • 兼容Android 7.0,支持FileProvider

  • 兼容Android 8.0,应用安装无障碍

  • 实现国际化(支持中文和英文)

用法

具体的 gradle 依赖、API 用法等,github上有详述,请移步:
https://github.com/ZuoHailong/AppUpdate

注意:使用者需自行访问自己项目的版本更新接口,获取版本更新内容、新版本名、新版本下载链接等,然后才能调用此库实现版本更新。此库提供的功能主要是弹框、下载、安装等。

实现

版本更新提示框

AppUpdateManager 是此库的入口,在其中采用 Builder 模式对版本更新进行初始化,并调起版本更新框。支持 “建议更新” 或 “必须更新” 。

此库提供的所有API都集中在 AppUpdateManager.Builder 中。

代码很浅显,这里就不贴了,想要看的访问 Github 好了。

下载

  • 下载采用的方式是 Service + AsyncTask,做了断点下载的支持;

  • 应用的下载支持常见的直接指向文件的以 “.apk” 结尾的url的形式

  • 应用的下载还支持接口直接返回文件流的形式。

    需要注意的是,这种方式,文件大小是必须设置的,是否支持断点下载则是由server端小伙伴决定的,并需要在builder时进行设置:
    builder.updateForce(boolean isForce)

  • 兼容了 Android 6.0,可自动获取 “存储写入” 权限,用户拒绝的话,会在用户下次点击 “立即更新” 时再次申请权限。除非必要,使用者不需要再关心 “存储写入” 的权限问题;

  • AsyncTask中使用了 okHttp 库进行下载,目前用的是 okHttp 的最新版 4.0.0 。后面也许会考虑移除 okHttp 库,使用自己的代码进行下载,以便进一步缩减此库体积。

注:这一块的代码,有受益于郭霖大神的书《第一行代码(第2版)》。

安装

安装的重点是要做 Android 7.0 和 Android 8.0 的兼容,也就是在 7.0 上要处理 FileProvider 的问题,在 8.0 上要处理 “安装未知来源应用” 权限的问题,即:

短期内更新计划

  • 建议更新模式下,在更新提示框中显示下载进度,且app不可用的处理方式似乎不大合适,改为 “ 更新提示框消失,在通知栏中显示下载进度,不影响app使用,下载完成后自动调起安装页面 ” 会更加友好一些;

  • okHttp 库的引用移除,用自己的代码实现 apk 的断点下载。

项目源码在 github 上,并提供了 demo 供测试使用:https://github.com/ZuoHailong/AppUpdate

感谢

郭霖:https://blog.csdn.net/guolin_blog

薛翔的开源库XUpdate:https://github.com/xuexiangjys/XUpdate

千匍的开源库AppUpdate:https://github.com/WVector/AppUpdate

更多相关文章

  1. 简单轻松!通过USB数据线,让Android(安卓)Studio连接到自己的安卓手
  2. Android开发的第一个例子(内附Sdk、Android(安卓)studio的下载)
  3. 必应为Android和iOS平台的新版必应应用
  4. 【android 蓝牙开发——传统蓝牙】
  5. "必须搭配使用google play服务才能运行"或“您必须先更新Google
  6. Android基于IIS的APK下载(一)自定义更新控件
  7. android P版本 系统稳定性问题案例分析(二)
  8. Android(安卓)Patcher应用增量更新(App补丁式更新,无需下载整个ap
  9. Qt for Android——Ubuntu下Qt for Android的环境搭建

随机推荐

  1. android 输入法弹出键盘把listview顶上去
  2. (android 实战总结)android对html支持接
  3. Android禁止横屏竖屏切换
  4. Android(安卓)核心分析 之七------Servic
  5. Android(安卓)bootloader—LK的分析之如
  6. android process information
  7. 在程序中设置android:gravity 和 android
  8. Spring For Android初步
  9. 全新的Android通知栏,已抛弃setLatestEve
  10. H5 Web网页通过JS(JavaScript)脚本调用Andr