• Stars
    star
    876
  • Rank 52,107 (Top 2 %)
  • Language
    Java
  • License
    MIT License
  • Created over 6 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🚀 AppUpdater一个专注于App更新,一键傻瓜式集成App版本升级的轻量开源库。(集成步骤超简单)

AppUpdater

Image

Download MavenCentral JCenter JitPack CI CircleCI API License Blog QQGroup

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

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

  • AppUpdater 核心库主要包括 app-updaterapp-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 展示

Image

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

引入

Gradle:

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

以前发布至JCenter的版本

    //----------AndroidX 版本
    //app-updater
    implementation 'com.king.app:app-updater:1.0.10-androidx'
    //app-dialog
    implementation 'com.king.app:app-dialog:1.0.10-androidx'

    //----------Android Support 版本
    //app-updater
    implementation 'com.king.app:app-updater:1.0.10'
    //app-dialog
    implementation 'com.king.app:app-dialog:1.0.10'

示例

    //一句代码,傻瓜式更新
    new AppUpdater(getContext(),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(getContext())
                            .setUrl(mUrl)
                            .build()
                            .start();
                    AppDialog.INSTANCE.dismissDialog();
                }
            });
    AppDialog.INSTANCE.showDialog(getContext(),config);
    //简单DialogFragment升级
    AppDialogConfig config = new AppDialogConfig(getContext());
    config.setTitle("简单DialogFragment升级")
            .setConfirm("升级")
            .setContent("1、新增某某功能、\n2、修改某某问题、\n3、优化某某BUG、")
            .setOnClickConfirm(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    AppUpdater appUpdater = new AppUpdater.Builder(getContext())
                            .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);

更多使用详情,请查看app中的源码使用示例或直接查看API帮助文档

补充说明

app-updater

  • 不设置 HttpManager 时,默认使用 HttpsURLConnection 实现的 HttpManager 进行下载,如果想要使用 OkHttpClient 实现下载,需依赖 okhttp 库;(内部默认提供 HttpManagerOkHttpManager 两种实现)
  • 支持下载APK时,优先取本地缓存策略,避免多次重复下载相同的APK文件;(校验方式支持 文件MD5VersionCode 比对)
  • 如需自定义更新App时通知栏中的相关文案信息;你只需在 string.xml 定义相同的名字进行覆盖即可(app-updater 中的资源定义都是以 app_updater 开头)。
  • 不设置 Notification 时,默认使用 NotificationImpl 实现的,如果当前的通知栏的布局不满足你的需求,可通过参考 NotificationImpl 去自定义实现一个 INotification
  • AppUpdater 中的日志统一使用 LogUtils 进行管理,通过 LogUtils.setShowLog 可以全局设置是否显示日志;需要定位AppUpdater 内部日志信息时,只需过滤以 AppUpdater 开头的 Log Tag 即可。
  • AppUpdater 的更多配置说明请查看 AppUpdater.BuilderUpdateConfig;方法上基本都有详细的说明。

app-dialog

  • AppDialogConfig 主要提供一些对话框配置,内部提供了一套默认的配置,你也可以通过 AppDialogConfig 对外暴露的方法,自定义对话框配置;AppDialog 主要负责对话框的显示与消失;通过 AppDialogAppDialogConfig,你可以很容易的实现一个自定义对话框;
  • AppDialog 足够通用,其内部实现了一套最常见对话框,并给予一系列的默认配置,让使用者可以尽可能的通过少的配置就能实现功能;AppDialog 也足够抽象,对话框布局样式是可随意定制;
  • 基于以上几点,这里列个特别的场景说明:如需你想不通过自定义布局的方式定义对话框布局,同时默认的对话框的文字或按钮颜色不太符合你的需求场景,只想修改 AppDialog 内置默认对话框提示文字的颜色(包括按钮文字),你可以通过在 colors.xml 定义相同的名字进行覆盖即可(app-dialog 中的资源定义都是以 app_dialog 开头)。

混淆

app-updater Proguard rules

app-dialog Proguard rules

版本记录

v1.1.4:2023-2-5

  • 优化注释
  • 优化细节

v1.1.3:2022-4-25

  • 统一日志管理
  • 适配Android 12(S)
  • 优化细节

v1.1.2:2021-11-18

  • AppDialog对外提供更多与WindowManager.LayoutParams相关的配置

v1.1.1:2021-9-14

  • 对外提供更多可配置参数
  • 优化细节

v1.1.0:2021-7-2 (从v1.1.0开始不再发布至JCenter)

  • 后续版本只支持androidx,版本名称不再带有androidx标识
  • 优化细节
  • 迁移发布至Maven Central

v1.0.10:2021-3-4

  • AppDialogConfig添加构造参数,简化自定义扩展用法
  • 优化细节

v1.0.9:2020-12-11

  • 优化默认Dialog样式的显示细节

v1.0.8:2020-1-2

  • 支持MD5校验
  • 对外提供获取Dialog方法

v1.0.7:2019-12-18

  • 优化细节

v1.0.6:2019-11-27

  • 新增OkHttpManager 如果使用了OkHttpManager则必须依赖okhttp
  • 优化细节 (progress,total 变更 int -> long)

v1.0.5:2019-9-4

  • 支持取消下载

v1.0.4:2019-6-4 开始支持AndroidX版本

  • 支持添加请求头

v1.0.3:2019-5-9

  • 新增支持下载APK优先取本地缓存,避免多次下载相同版本的APK文件
  • AppDialog支持隐藏Dialog的标题

v1.0.2:2019-3-18

  • 新增通知栏是否震动和铃声提示配置
  • AppDialogConfig新增getView(Context context)方法

v1.0.1:2019-1-10

  • 升级Gradle到4.6

v1.0 :2018-6-29

  • AppUpdater初始版本

赞赏

如果您喜欢AppUpdater,或感觉AppUpdater帮助到了您,可以点右上角“Star”支持一下,您的支持就是我的动力,谢谢 😃

您也可以扫描下面的二维码,请作者喝杯咖啡

关于我

Name: Jenly

Email: jenly1314#gmail.com / jenly1314#vip.qq.com

CSDN: jenly121

CNBlogs: jenly

GitHub: jenly1314

Gitee: jenly1314

加入QQ群: 20867961

More Repositories

1

ZXingLite

🔥 ZXing的精简极速版,优化扫码和生成二维码/条形码,内置闪光灯等功能。扫描风格支持:微信的线条样式,支付宝的网格样式。几句代码轻松拥有扫码功能 ,ZXingLite让集成更简单。(扫码识别速度快如微信)
Java
3,050
star
2

KingTV

📺 【停止维护】高仿全民直播(全民TV),项目采用 MVP + RXJava + Retrofit + OKHttp + Material Design + Dagger2 + Base + Glide + GreenDao构建。因为全民TV已经凉了,导致App已经连不上了。在这里特意向你推荐MVPFrame: https://github.com/jenly1314/MVPFrame 和你值得拥有的MVVMFrame快速开发框架: https://github.com/jenly1314/MVVMFrame
Java
1,604
star
3

MLKit

🌝 MLKit是一个强大易用的工具包。通过ML Kit您可以很轻松的实现文字识别、条码识别、图像标记、人脸检测、对象检测等功能。
Java
909
star
4

WeChatQRCode

⛄ 基于OpenCV开源的微信二维码引擎移植的二维码扫码识别库
C++
617
star
5

CircleProgressView

🎡 CircleProgressView是一个圆形渐变的进度动画控件(支持外环显示刻度,内环随之变化,配置参数完全可配),动画效果纵享丝滑。
Java
447
star
6

WanAndroid

🏄 基于Architecture Components dependencies (Lifecycles,LiveData,ViewModel,Room)构建的WanAndroid开源项目。 你值得拥有的MVVM快速开发框架:https://github.com/jenly1314/MVVMFrame
Java
417
star
7

MVVMFrame

🏰 MVVMFrame for Android 是一个基于Google官方推出的JetPack构建的快速开发框架。从此构建一个MVVM模式的项目变得快捷简单。
Kotlin
369
star
8

ArcSeekBar

🎡 ArcSeekBar 一个弧形可拖动进度条控件。弧形大小,弧度,颜色渐变等配置完全可定制化
Java
313
star
9

Base

🍁 Base是针对于Android开发封装好一些常用的基类,主要包括通用的Adapter、Activity、Fragment、Dialog等、和一些常用的Util类,只为更简单。
Java
265
star
10

KingKeyboard

🎹 KingKeyboard 是一个自定义键盘。内置了满足各种场景的键盘需求:包括但不限于混合、字母、数字、电话、身份证、车牌号等可输入场景。还支持自定义。集成简单,键盘可定制化。
Java
244
star
11

GiftSurfaceView

🌷 直播间送礼物拼图案动画控件
Java
238
star
12

SuperTextView

🎀 SuperTextView for Android 是一个在TextView的基础上扩展了几种动画效果的控件。
Java
187
star
13

NeverCrash

🌍 全局捕获Crash。信NeverCrash,永不Crash。
Java
183
star
14

FlutteringLayout

🎈 一个直播间点赞桃心飘动效果的控件
Java
162
star
15

UltraSwipeRefresh

🏄 一个可带来极致体验的Compose刷新组件;支持下拉刷新和上拉加载,可完美替代官方的SwipeRefresh;并且支持的功能更多,可扩展性更强。
Kotlin
137
star
16

SplitEditText

🔢 SplitEditText 是一个灵活的分割编辑框。常常应用于验证码输入 、密码输入等场景。
Java
123
star
17

MapHelper

🌏 MapHelper是一个整合了高德地图、百度地图、腾讯地图、谷歌地图等相关路线规划和导航的地图帮助类库
Kotlin
106
star
18

MVPFrame

🏰 MVPFrame for Android 是一个集合了 Retrofit2 + RXJava2 + OkHttp3 + Mosby3 二次封装构建的MVP快速开发框架,为敏捷开发而生。
Java
102
star
19

WaveView

🏄 WaveView 一个水波纹动画控件视图,支持波纹数,波纹振幅,波纹颜色,渐变色,波纹速度,波纹方向等属性完全可配。
Java
98
star
20

RadarView

🍳 RadarView for Android 是一个雷达扫描动画后,然后展示得分效果的控件。
Java
85
star
21

DrawBoard

🎨 DrawBoard 是一个自定义 View实现的画板;方便对图片进行编辑和各种涂鸦相关操作
Java
77
star
22

ANetty

✉️ ANetty 是基于Netty二次封装的Android链路通讯库,用以快速开发高性能,高可靠性的网络交互。在保证易于开发的同时还保证其应用的性能,稳定性和伸缩性。轻松实现长连接通讯。
Java
70
star
23

AppPay

💸 AppPay专注于App支付的库,几句代码轻松搞定微信支付、支付宝支付、银联支付。集成更简单。
Java
70
star
24

Location

📍 Location 是一个通过 Android 自带的 LocationManager 来实现的定位功能
Kotlin
64
star
25

KingPlayer

🎬 一个专注于 Android 视频播放器的基础库,无缝切换内核。(IjkPlayer、ExoPlayer、VlcPlayer、MediaPlayer)
Java
61
star
26

ImageViewer

🌅 ImageViewer是一个图片查看器(类似微信查看图片效果),一般用来查看图片详情或查看大图时使用,支持多张查看。简单易用。
Java
56
star
27

SuperSlidingPaneLayout

SuperSlidingPaneLayout 是基于SlidingPaneLayout扩展修改,新增几种不同的侧滑效果。
Java
55
star
28

SlideBar

SlideBar for Android 一个很好用的联系人字母快速索引
Java
51
star
29

SpinCounterView

🎡 一个类似于码表变化的旋转计数器动画控件
Java
51
star
30

ViewfinderView

🎯 ViewfinderView 是一个取景视图:主要用于渲染扫描相关的动画效果。其样式主要分为两大类:经典样式(带扫描框)、流行样式(不带扫描框);可任意定制。
Java
51
star
31

ASocket

🌐 ASocket 是一个TCP/UDP协议的封装库,方便快速实现TCP的长连接与UDP的单播、组播、广播等相关通信
Java
51
star
32

BaseUrlManager

⛵ BaseUrlManager的设计初衷主要用于开发时,有多个环境需要打包APK的场景,通过BaseUrlManager提供的BaseUrl动态设置入口,只需打一次包,即可轻松随意的切换不同的开发环境或测试环境。在打生产环境包时,关闭BaseUrl动态设置入口即可。
Java
50
star
33

AppTemplate

🎭 App快速构建模板,致力于快速开发实现App提供解决方案
Kotlin
44
star
34

CounterView

一个数字变化效果的计数器视图控件
Java
43
star
35

KingsGirls

👩 项目采用RXJava + Retrofit + OKHttp + Material Design + Base + Glide构建,数据来自gank.io。是一款以瀑布流的形式展示美女福利的App
Java
41
star
36

CameraScan

📷 CameraScan一个简化扫描识别流程的通用基础库
Java
37
star
37

DragPolygonView

⭐ 一个支持可拖动多边形,可拖动多边形的角改变其形状的任意多边形控件
Java
33
star
38

RetrofitHelper

💪 RetrofitHelper是一个支持配置多个BaseUrl,支持动态改变BaseUrl,动态配置超时时长的Retrofit帮助类
Java
32
star
39

MVVMFrameComponent

🏰 基于 MVVMFrame 框架 采用 JetPack (Lifecycle,LiveData,ViewModel,Room) + Dagger + DataBinding + Retrofit + OkHttp + Glide + Kotlin coroutines + ARouter等 为核心基础库构建的组件化方案
Kotlin
30
star
40

KingWeather

☁️ 一个基于Jetpack构建的MVVM天气预报APP。你值得拥有的MVVM快速开发框架:https://github.com/jenly1314/MVVMFrame
Kotlin
29
star
41

AWebSocket

🌐 AWebSocket一个基于okhttp封装的WebSocket,简洁易用。
Kotlin
28
star
42

SuperSwipeRefreshLayout

SuperSwipeRefreshLayout是在SwipeRefreshLayout的基础之上扩展修改,让其支持上拉刷新,基本用法与SwipeRefreshLayout一致。
Java
27
star
43

KVCache

📝 KVCache 是一个便于统一管理的键值缓存库;支持无缝切换缓存实现
Kotlin
26
star
44

GuidePage

📄 GuidePage是一个App欢迎引导页库。一般应用于首次打开App时的场景,通过引导页指南,概述App特色等相关信息。(链式调用,一行代码搞定)
Kotlin
23
star
45

CodeTextField

🔢 CodeTextField 一个使用 Compose 实现的验证码输入框
Kotlin
20
star
46

libyuv

🌈 基于Google的libyuv编译封装的YUV转换工具库,主要用途是在各种YUV与RGB之间进行相互转换、裁减、旋转、缩放、镜像等。(用法超简单)
C++
16
star
47

LoadingView

🍭 LoadingView 是一个圆弧加载过渡动画,圆弧个数,大小,弧度,渐变颜色,完全可配。
Kotlin
16
star
48

AppMonitor

🎯 AppMonitor 可以轻松的监听App的前后台状态变化;Activity的活跃状态变化;设备的开关屏状态变化
Kotlin
14
star
49

compose-component

🍇 compose-component 是一个Jetpack Compose的组件库;主要提供了一些小组件,便于快速使用。
Kotlin
11
star
50

EasyNote

📑 EasyNote 是一个遵循 Clean Architecture 分层,使用 Jetpack Compose 实现的笔记App
Kotlin
10
star
51

LogX

🚩 LogX 一个小而美的日志记录框架;好用不解释。
Kotlin
8
star
52

WordPOI

👍 WordPOI是一个将Word接口文档转换成JavaBean的工具库,主要目的是减少部分无脑的开发工作。
Java
7
star
53

GradlePublish

Gradle 一些常用配置
5
star
54

jenly1314.github.io

This is my personal blog repository. https://jenly1314.github.io
EJS
4
star
55

JavaFieldGenerator

☕ JavaFieldGenerator 是一个可以根据字符串内容快速生成Java字段的插件
Java
3
star
56

Http

Http
Java
2
star
57

KingVolley

KingVolley 是Volley的二次封装
Java
1
star
58

King

实现android基本网络通信和常用工具类封装的简易框架
Java
1
star