Android 超级轻量的版本更新库AppUpdate | 您所在的位置:网站首页 › reboot_updateapk › Android 超级轻量的版本更新库AppUpdate |
文章目录
写在前面示例功能介绍用法实现版本更新提示框下载安装
短期内更新计划感谢
写在前面
欢迎大家关注我的公众号:牛角尖尖上起舞 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 欢迎大家关注我的公众号:牛角尖尖上起舞 |
CopyRight 2018-2019 实验室设备网 版权所有 |