{"id":13645230,"url":"https://github.com/easyandroidgroup/UpdatePlugin","last_synced_at":"2025-04-21T13:32:26.185Z","repository":{"id":91828318,"uuid":"58435728","full_name":"easyandroidgroup/UpdatePlugin","owner":"easyandroidgroup","description":"可任意定制的app更新组件。","archived":false,"fork":false,"pushed_at":"2019-11-26T05:02:20.000Z","size":6972,"stargazers_count":1330,"open_issues_count":12,"forks_count":257,"subscribers_count":46,"default_branch":"master","last_synced_at":"2024-10-30T00:31:56.419Z","etag":null,"topics":["android","customizable","flexible","update"],"latest_commit_sha":null,"homepage":"https://juejin.im/post/5a32485851882504a35f007a","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/easyandroidgroup.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2016-05-10T06:31:58.000Z","updated_at":"2024-10-16T06:13:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"49d81d88-76bd-43ff-a3bd-f4a779b4de4d","html_url":"https://github.com/easyandroidgroup/UpdatePlugin","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easyandroidgroup%2FUpdatePlugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easyandroidgroup%2FUpdatePlugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easyandroidgroup%2FUpdatePlugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easyandroidgroup%2FUpdatePlugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/easyandroidgroup","download_url":"https://codeload.github.com/easyandroidgroup/UpdatePlugin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223823339,"owners_count":17208946,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","customizable","flexible","update"],"created_at":"2024-08-02T01:02:31.665Z","updated_at":"2024-11-09T18:30:36.675Z","avatar_url":"https://github.com/easyandroidgroup.png","language":"Java","readme":"# UpdatePlugin [![](https://jitpack.io/v/yjfnypeu/UpdatePlugin.svg)](https://jitpack.io/#yjfnypeu/UpdatePlugin)\n\n\nUpdatePlugin是一款用来进行app更新升级的框架。\n\n### 原理\nUpdatePlugin主要基于对整个更新流程的梳理，针对更新流程中可能的被用户需要定制的节点。提供对应的定制接口出来提供用户进行各种定制；\n\n为了方便用户直接使用，对于更新流程中非用户必须定制的接口。框架也对各个节点实现了一套自身默认的定制接口。做到拿来即用的。\n\n### 特性\n\n- 支持断点下载\n- 支持 [Android 8.0] 应用安装方式\n- 支持接入任意更新api\n- 支持强制更新、忽略此版本更新逻辑\n- 支持对apk进行安全检查，防止类似DNS劫持后被替换更新apk包的情况\n- 支持指定apk下载文件地址\n- 支持定制接入更新网络任务。适配更多网络使用场景\n- 支持定制各种更新策略。比如默认使用的WIFI下默认直接下载后再通知更新，非WIFI下先通知更新再启动下载等。\n- 支持定制安装策略。比如在插件化、热修复环境下进行定制使用\n- 支持任意定制更新流程中的各种通知：检查到有更新时的通知、下载时的进度条通知、下载完成后安装之前的通知。\n- 支持定制后台任务重启逻辑\n- 当APK下载失败时，支持重启下载任务。\n\n### 引入方式：\n\n由于各种原因，现将依赖仓库地址，从jCenter迁移到JitPack，请升级新版使用时注意一下：\n\n加入JitPack仓库依赖。\n```\nallprojects {\n    repositories {\n        maven { url 'https://jitpack.io' }\n    }\n}\n```\n- 在要使用的项目的build.gradle中。添加依赖：\n\nLastestVersion= [![](https://jitpack.io/v/yjfnypeu/UpdatePlugin.svg)](https://jitpack.io/#yjfnypeu/UpdatePlugin)\n\n```\ndependencies {\n    ...\n    compile \"com.github.yjfnypeu:UpdatePlugin:$LastestVersion\"\n}\n```\n\n### 流程图\n\n![flow chart](./screenshots/flow_chart.png)\n\n### 使用方式：\n\n#### 创建更新配置类：\n\n```\nUpdateConfig.getConfig()\n\t\t.setUrl(url)// 配置检查更新的API接口\n\t\t.setUpdateParser(new UpdateParser() {\n\t\t\t@Override\n\t\t\tpublic void Update parse(String response) throws Exception {\n\t\t\t\t// TODO 此处的response数据为上方检查更新接口所返回回来的数据。\n\t\t\t\t// 需要在此对response数据进行解析，并创建出对应的update实体类数据\n\t\t\t\t// 提供给框架内部进行使用\n\t\t\t\treturn update;\n\t\t\t}\n\t\t});\n```\n\n#### 启动更新任务\n\n框架提供两种更新任务启动方式，分别对应于不同的场景下进行使用：\n\n##### 1. 普通更新任务\n\n```\nUpdateBuilder.create()\n\t.check();// 启动更新任务\n```\n普通更新任务主要用于设置页中，由用户点击检查更新时所主动触发的更新任务。\n##### 2. 后台更新任务\n\n后台更新任务主要是提供出来，采用后台轮询更新的机制，便于及时检查到新发布的APK进行版本更新\n\n```\nUpdateBuilder task = UpdateBuilder.create()\n\n// 启动后台更新任务，retryTime为重启时间间隔，单位为秒。\n// 即通过此方法所启动的更新任务。将会在'无更新'，'更新失败'等条件下：\n// 延迟指定的时间间隔后，自动重新启动。\ntask.checkForDaemon(retryTime);\n...\n// 可使用此方法，停止后台更新任务的重启机制。\ntask.stopDaemon();\n```\n\n[更多使用方法请参考此处WIKI文档](https://github.com/yjfnypeu/UpdatePlugin/wiki)\n\n### 联系作者\nemail: 470368500@qq.com\n\n\u003ca target=\"_blank\" href=\"http://shang.qq.com/wpa/qunwpa?idkey=99e758d20823a18049a06131b6d1b2722878720a437b4690e238bce43aceb5e1\"\u003e\u003cimg border=\"0\" src=\"http://pub.idqqimg.com/wpa/images/group.png\" alt=\"安卓交流会所\" title=\"安卓交流会所\"\u003e\u003c/a\u003e\n\n或者手动加入QQ群: 108895031\n","funding_links":[],"categories":["升级更新"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasyandroidgroup%2FUpdatePlugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feasyandroidgroup%2FUpdatePlugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasyandroidgroup%2FUpdatePlugin/lists"}