Home

Awesome

AppUpdater

Image

Download MavenCentral JitPack CircleCI API License

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

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

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

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

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

功能介绍

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.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);

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

补充说明

app-updater

app-dialog

混淆

app-updater Proguard rules

app-dialog Proguard rules

<!-- end -->

版本日志

v1.2.0:2023-7-9

查看更多版本日志

赞赏

如果您喜欢AppUpdater,或感觉AppUpdater帮助到了您,可以点右上角“Star”支持一下,您的支持就是我的动力,谢谢 :smiley:<p> 您也可以扫描下面的二维码,请作者喝杯咖啡 :coffee:

<div> <img src="https://jenly1314.github.io/image/page/rewardcode.png"> </div>

关于我

我的博客GitHubGiteeCSDN博客园
<a title="我的博客" href="https://jenly1314.github.io" target="_blank">Jenly's Blog</a><a title="GitHub开源项目" href="https://github.com/jenly1314" target="_blank">jenly1314</a><a title="Gitee开源项目" href="https://gitee.com/jenly1314" target="_blank">jenly1314</a><a title="CSDN博客" href="http://blog.csdn.net/jenly121" target="_blank">jenly121</a><a title="博客园" href="https://www.cnblogs.com/jenly" target="_blank">jenly</a>

联系我

微信公众号Gmail邮箱QQ邮箱QQ群QQ群
Jenly666<a title="给我发邮件" href="mailto:jenly1314@gmail.com" target="_blank">jenly1314</a><a title="给我发邮件" href="mailto:jenly1314@vip.qq.com" target="_blank">jenly1314</a><a title="点击加入QQ群" href="https://qm.qq.com/cgi-bin/qm/qr?k=6_RukjAhwjAdDHEk2G7nph-o8fBFFzZz" target="_blank">20867961</a><a title="点击加入QQ群" href="https://qm.qq.com/cgi-bin/qm/qr?k=Z9pobM8bzAW7tM_8xC31W8IcbIl0A-zT" target="_blank">64020761</a>
<div> <img src="https://jenly1314.github.io/image/page/footer.png"> </div>