当前位置: 首页 > article >正文

AppUpdate

AppUpdate

AppUpdater for Android 是一个专注于App更新,一键傻瓜式集成App版本升级的轻量开源库。

无需担心各种细节的处理和适配问题;包括但不仅限于:通知栏适配、重复下载、文件访问授权、App安装等问题;这些 AppUpdater 都已帮您处理好。

  • AppUpdater 核心库主要包括 app-updater 和 app-dialog 。

app-updater 主要负责后台下载更新App,无需担心下载时各种配置相关的细节,一键傻瓜式升级。

app-dialog 主要是提供常用的Dialog和DialogFragment,简化弹框提示的实现,布局样式可随意定制。

  • 下载更新和弹框提示之所以分开是因为这本来就是两个功能。二者完全独立,可以在解耦同时减少侵入性。

如果你只需要单纯的 App下载更新功能,仅依赖 app-updater 即可; 如果你在需要App下载更新功能的同时,还需要有对话框来进行交互; 那么 app-updater + app-dialog 二者配合使用,谁用谁知道。

功能介绍

  • ✅ 专注于App更新一键傻瓜式升级
  • ✅ 够轻量,体积小
  • ✅ 支持监听下载和自定义下载流程
  • ✅ 支持下载失败时,可重新下载
  • ✅ 支持文件MD5校验,避免重复下载
  • ✅ 支持通知栏提示内容和流程全部可配置
  • ✅ 支持取消下载
  • ✅ 支持使用HttpsURLConnection或OkHttpClient进行下载
  • ✅ 支持Android 10(Q)
  • ✅ 支持Android 11(R)
  • ✅ 支持Android 12(S)

Gif 展示

你也可以直接下载 演示App 体验效果

引入

Gradle:

  1. 在Project的 build.gradle 里面添加远程仓库
allprojects {
    repositories {
        //...
        mavenCentral()
    }
}
  1. 在Module的 build.gradle 里面添加引入依赖项
    //----------AndroidX 版本
    //app-updater
    implementation 'com.github.jenly1314.AppUpdater:app-updater:1.2.0'
    //app-dialog
    implementation 'com.github.jenly1314.AppUpdater:app-dialog:1.2.0'

示例

    //一句代码,傻瓜式更新
    new AppUpdater(context,url).start();
    //简单弹框升级
    AppDialogConfig config = new AppDialogConfig(context);
    config.setTitle("简单弹框升级")
            .setConfirm("升级") //旧版本使用setOk
            .setContent("1、新增某某功能、\n2、修改某某问题、\n3、优化某某BUG、")
            .setOnClickConfirm(new View.OnClickListener() { // 旧版本使用setOnClickOk
                @Override
                public void onClick(View v) {
                    new AppUpdater.Builder(context)
                            .setUrl(mUrl)
                            .build()
                            .start();
                    AppDialog.INSTANCE.dismissDialog();
                }
            });
    AppDialog.INSTANCE.showDialog(context,config);
    //简单DialogFragment升级
    AppDialogConfig config = new AppDialogConfig(context);
    config.setTitle("简单DialogFragment升级")
            .setConfirm("升级")
            .setContent("1、新增某某功能、\n2、修改某某问题、\n3、优化某某BUG、")
            .setOnClickConfirm(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    AppUpdater appUpdater = new AppUpdater.Builder(context)
                            .setUrl(mUrl)
                            .build();
                    appUpdater.setHttpManager(OkHttpManager.getInstance()) // 使用OkHttp的实现进行下载
                            .setUpdateCallback(new UpdateCallback() { // 更新回调
                                @Override
                                public void onDownloading(boolean isDownloading) {
                                    // 下载中:isDownloading为true时,表示已经在下载,即之前已经启动了下载;为false时,表示当前未开始下载,即将开始下载
                                }

                                @Override
                                public void onStart(String url) {
                                    // 开始下载
                                }

                                @Override
                                public void onProgress(long progress, long total, boolean isChanged) {
                                    // 下载进度更新:建议在isChanged为true时,才去更新界面的进度;因为实际的进度变化频率很高
                                }

                                @Override
                                public void onFinish(File file) {
                                    // 下载完成
                                }

                                @Override
                                public void onError(Exception e) {
                                    // 下载失败
                                }

                                @Override
                                public void onCancel() {
                                    // 取消下载
                                }
                            }).start();

                    AppDialog.INSTANCE.dismissDialogFragment(getSupportFragmentManager());
                }
            });
    AppDialog.INSTANCE.showDialogFragment(getSupportFragmentManager(), config);

http://www.kler.cn/a/300057.html

相关文章:

  • 一个基于Python+Appium的手机自动化项目~~
  • redis离线安装部署详解(包括一键启动)
  • Plotly 函数图像绘制
  • 什么是网络爬虫?Python爬虫到底怎么学?
  • SpringCloud微服务Gateway网关简单集成Sentinel
  • Axios HTTP库基础教程:从安装到GET与POST请求的实现
  • 论文120:Giga-SSL: Self-supervised learning for gigapixel images (2023, CVPR, 开源)
  • 我与Linux的爱恋:yum和vim以及gcc、gdb、git的使用
  • 力扣每日一题:1448.统计二叉树中好节点的数目
  • 3.比 HTTP 更安全的 HTTPS(工作原理理解、非对称加密理解、证书理解)
  • 计算机视觉中,什么是Hide-and-Seek?
  • ctf.show靶场ssrf攻略
  • Ubuntu 比较两个文件夹
  • lint warning: Detected unload(unconected) net
  • google vr 入门之VrPanoramaView制作全景图列表
  • 虚拟机安装教程
  • github远程仓库环境搭建及使用
  • 单场景续航
  • 大数据新视界 --大数据大厂之 Spark 性能优化秘籍:从配置到代码实践
  • 网络层 VIII(网络层设备——路由器)【★★★★★★】
  • 非高峰期我
  • 基于springboot+vue乒乓球预约管理系统
  • 如果您的 iPhone 卡在 Apple 标志画面
  • 江协科技STM32学习- P9 OLED调试工具
  • kplayer推流24小时直播 闲置云服务器使用
  • 使用 Grype 检查 .jar 包中的漏洞