文章目录

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

写在前面

欢迎大家关注我的公众号:牛角尖尖上起舞

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 上要处理 “安装未知来源应用” 权限的问题,即:


<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permissionandroid:name="android.permission.INSTALL_PACKAGES"tools:ignore="ProtectedPermissions" />

短期内更新计划

  • 建议更新模式下,在更新提示框中显示下载进度,且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

欢迎大家关注我的公众号:牛角尖尖上起舞

Android 超级轻量的版本更新库AppUpdate相关推荐

  1. NSIS:超级轻量皮肤SkinH

    NSIS:超级轻量皮肤SkinH 原文 NSIS:超级轻量皮肤SkinH 这虽然是一个其他软件的皮肤控件,不过拿来用到NSIS上还是不错的.控件加皮肤文件只有100多K,可以说是比较难得了! 看一下效 ...

  2. hocon配置文件_GitHub - Himmelt/Hocon: Simple Hocon Configuration Library [轻量 Hocon 配置库]...

    Hocon Simple Hocon Configuration Library 轻量 Hocon 配置库 简介 这是一个轻量级的 Hocon 配置库,没有其他依赖项. 注意,这是一个使用 Hocon ...

  3. Riot - 比 Facebook React 更轻量的 UI 库

    Riot 是一个类似 Facebook React 的用户界面库,只有3.5KB,非常轻量.支持IE8 浏览器的自定义标签,虚拟 DOM,语法简洁.Riot 给前端开发人员提供了除 React 和 P ...

  4. web文本编辑器php源码,超级轻量web富文本编辑器HandyEditor

    HandyEditor 是一套十分轻量且同时适用于手机端和pc端的web富文本编辑器,主要用于让用户在网站上获得所见即所得编辑效果,可以用 HandyEditor 把传统的多行文本输入框(textar ...

  5. android 百度轻量输入法,百度发布Android手机输入法 打造流畅体验

    日前,百度无线宣布正式推出Android版本手机输入法,凭借其拥有独家专利的多样输入.点划结合等创新技术,秉承百度一贯的"简单可依赖"的产品设计原则,将为Android用户带来最便 ...

  6. c# json datatable_KoobooJson一款高性能且轻量的JSON库

    (给DotNet加星标,提升.Net技能) 转自:小曾看世界 cnblogs.com/1996V/p/10607916.html KoobooJson - 更小更快的C# JSON序列化工具(基于表达 ...

  7. mysql轻量在线管理工具_重磅推荐!我在Github找到一个超级轻量、灵活的SQL工具...

    开源最前线(ID:OpenSourceTop) 猿妹综合整理 综合自:https://github.com/HVF/franchise 今天,猿妹和大家推荐一款轻量级但功能强大的 SQL 工具,带有 ...

  8. Frappe Charts - 免费开源、轻量无依赖的 web 图表库,简单不臃肿,支持搭配 Vue / React 等框架使用

    一个小巧的图表库,基于 SVG 生成图表,使用很简单,推荐给大家. 关于 Frappe Charts Frappe Charts 是一个小巧简单的 JavaScript 图表库,通过简单几个参数,可以 ...

  9. if laytpl 非_laytpl : 一款非常轻量的JavaScript模板引擎

    //假设你得到了这么一段数据 var data = { title: '前端圈', intro: '一群码js的骚年,幻想改变世界,却被世界改变.', list: [{name: '贤心', city ...

最新文章

  1. iOS应用性能调优的25个建议和技巧【转】
  2. 理解离散傅立叶变换(三.复数)
  3. boost::units模块实现用常量测试所有运算符的组合的测试程序
  4. matlab 安装jdbc.jar
  5. codeforces CF438D The Child and Sequence 线段树
  6. 网络新潮文化:Wiki不完全手册
  7. python网络爬虫(5)BeautifulSoup的使用示范
  8. git 源代码自动检查_除了GitHub,你还知道那些免费源代码托管网站?
  9. EXCEL批量删除当前目录下所有工作薄的所有工作表的指定行
  10. Exadata中最有用的功能-存储索引
  11. NO.4 计算有序数组的平方
  12. javaweb项目电子商城购物系统课程设计任务书及成绩评定和毕业设计与实现
  13. 小程序授权之支付宝(普通公钥)
  14. 2021-06-13
  15. 凌晨三点的程序员,别让你的辛苦被辜负
  16. ConvE,知识图谱嵌入(KGE)论文复现(Ubuntu 20.04)
  17. Nokia的操作技巧
  18. 微信商城怎么做?5招教你捋清思路
  19. 监控html页面数据获取失败,前端异常采集(附实例)
  20. python二级第十二套答案

热门文章

  1. 中国电信天翼空间发布移动应用开发运营平台
  2. 复赛后第一次正经写博客
  3. Voldemort启动失败案例一则
  4. google翻译出错什么原因?翻译英文页面时中文闪了下就显示“翻译出错请重试”
  5. Word上次启动失败,安全模式可以希助您解决问题,但是部分功能在此模式下可能不可用
  6. html怎么安装系统,一键重装系统_MBR分区一键安装系统教程-爱纯净
  7. 钟平逻辑英语语法_关于钟平的逻辑英语
  8. 记一次线上微信公众号迁移遇到的坑
  9. Js(二)SyntaxError Cannot use import statement outside a module
  10. 有没有java自编歌曲_简易音乐播放器制作