MCPcopy Index your code
hub / github.com/easyandroidgroup/UpdatePlugin

github.com/easyandroidgroup/UpdatePlugin @3.1.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release 3.1.3 ↗ · + Follow
409 symbols 945 edges 57 files 126 documented · 31%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

UpdatePlugin

UpdatePlugin是一款用来进行app更新升级的框架。

原理

UpdatePlugin主要基于对整个更新流程的梳理,针对更新流程中可能的被用户需要定制的节点。提供对应的定制接口出来提供用户进行各种定制;

为了方便用户直接使用,对于更新流程中非用户必须定制的接口。框架也对各个节点实现了一套自身默认的定制接口。做到拿来即用的。

特性

  • 支持断点下载
  • 支持 [Android 8.0] 应用安装方式
  • 支持接入任意更新api
  • 支持强制更新、忽略此版本更新逻辑
  • 支持对apk进行安全检查,防止类似DNS劫持后被替换更新apk包的情况
  • 支持指定apk下载文件地址
  • 支持定制接入更新网络任务。适配更多网络使用场景
  • 支持定制各种更新策略。比如默认使用的WIFI下默认直接下载后再通知更新,非WIFI下先通知更新再启动下载等。
  • 支持定制安装策略。比如在插件化、热修复环境下进行定制使用
  • 支持任意定制更新流程中的各种通知:检查到有更新时的通知、下载时的进度条通知、下载完成后安装之前的通知。
  • 支持定制后台任务重启逻辑
  • 当APK下载失败时,支持重启下载任务。

引入方式:

由于各种原因,现将依赖仓库地址,从jCenter迁移到JitPack,请升级新版使用时注意一下:

加入JitPack仓库依赖。

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}
  • 在要使用的项目的build.gradle中。添加依赖:

LastestVersion=

dependencies {
    ...
    compile "com.github.yjfnypeu:UpdatePlugin:$LastestVersion"
}

流程图

flow chart

使用方式:

创建更新配置类:

UpdateConfig.getConfig()
        .setUrl(url)// 配置检查更新的API接口
        .setUpdateParser(new UpdateParser() {
            @Override
            public void Update parse(String response) throws Exception {
                // TODO 此处的response数据为上方检查更新接口所返回回来的数据。
                // 需要在此对response数据进行解析,并创建出对应的update实体类数据
                // 提供给框架内部进行使用
                return update;
            }
        });

启动更新任务

框架提供两种更新任务启动方式,分别对应于不同的场景下进行使用:

1. 普通更新任务
UpdateBuilder.create()
    .check();// 启动更新任务

普通更新任务主要用于设置页中,由用户点击检查更新时所主动触发的更新任务。

2. 后台更新任务

后台更新任务主要是提供出来,采用后台轮询更新的机制,便于及时检查到新发布的APK进行版本更新

UpdateBuilder task = UpdateBuilder.create()

// 启动后台更新任务,retryTime为重启时间间隔,单位为秒。
// 即通过此方法所启动的更新任务。将会在'无更新','更新失败'等条件下:
// 延迟指定的时间间隔后,自动重新启动。
task.checkForDaemon(retryTime);
...
// 可使用此方法,停止后台更新任务的重启机制。
task.stopDaemon();

更多使用方法请参考此处WIKI文档

联系作者

email: 470368500@qq.com

安卓交流会所

或者手动加入QQ群: 108895031

Extension points exported contracts — how you extend this code

DownloadCallback (Interface)
更新下载回调。 设置方式:UpdateConfig#setDownloadCallback(DownloadCallback) 或者 {@link UpdateBuilder#setDownloadCallback( [11 implementers]
updatepluginlib/src/main/java/org/lzh/framework/updatepluginlib/base/DownloadCallback.java
CheckCallback (Interface)
检查更新的回调监听。 设置方式:通过UpdateConfig#setCheckCallback(CheckCallback)或者{@link UpdateBuilder#setCheckCallback(CheckC [8 implementers]
updatepluginlib/src/main/java/org/lzh/framework/updatepluginlib/base/CheckCallback.java

Core symbols most depended-on inside this repo

get
called by 18
updatepluginlib/src/main/java/org/lzh/framework/updatepluginlib/util/ActivityManager.java
isForced
called by 10
updatepluginlib/src/main/java/org/lzh/framework/updatepluginlib/model/Update.java
getMainHandler
called by 10
updatepluginlib/src/main/java/org/lzh/framework/updatepluginlib/util/Utils.java
d
called by 10
updatepluginlib/src/main/java/org/lzh/framework/updatepluginlib/util/L.java
show
called by 9
app/src/main/java/org/lzh/framework/updateplugin/update/ToastCallback.java
getApplicationContext
called by 8
updatepluginlib/src/main/java/org/lzh/framework/updatepluginlib/util/ActivityManager.java
safeDismissDialog
called by 8
updatepluginlib/src/main/java/org/lzh/framework/updatepluginlib/util/SafeDialogHandle.java
isDefaultSelected
called by 8
app/src/main/java/org/lzh/framework/updateplugin/widget/CheckedView.java

Shape

Method 351
Class 56
Interface 2

Languages

Java100%

Modules by API surface

updatepluginlib/src/main/java/org/lzh/framework/updatepluginlib/UpdateBuilder.java39 symbols
updatepluginlib/src/main/java/org/lzh/framework/updatepluginlib/UpdateConfig.java34 symbols
updatepluginlib/src/main/java/org/lzh/framework/updatepluginlib/model/Update.java16 symbols
updatepluginlib/src/main/java/org/lzh/framework/updatepluginlib/base/RestartHandler.java16 symbols
updatepluginlib/src/main/java/org/lzh/framework/updatepluginlib/flow/CallbackDelegate.java14 symbols
updatepluginlib/src/main/java/org/lzh/framework/updatepluginlib/util/ActivityManager.java13 symbols
updatepluginlib/src/main/java/org/lzh/framework/updatepluginlib/base/CheckWorker.java13 symbols
app/src/main/java/org/lzh/framework/updateplugin/update/ToastCallback.java13 symbols
updatepluginlib/src/main/java/org/lzh/framework/updatepluginlib/util/UpdateInstallProvider.java11 symbols
updatepluginlib/src/main/java/org/lzh/framework/updatepluginlib/base/DownloadWorker.java11 symbols
updatepluginlib/src/main/java/org/lzh/framework/updatepluginlib/flow/DefaultDownloadCallback.java10 symbols
app/src/main/java/org/lzh/framework/updateplugin/SampleActivity.java10 symbols

For agents

$ claude mcp add UpdatePlugin \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact