9

你想要的Android全量版本更新功能,我这儿都有!

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=Mzg2NjA3NDIyMA%3D%3D&%3Bmid=2247484416&%3Bidx=1&%3Bsn=903ee007f836da4c412849b4a6bc4bdb
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

背景

前段时间我写了一篇介绍我的一个开源项目XUpdate的博客: 史上最好用的Android全量版本更新库XUpdate使用指南 , 收到了大家普遍的认可,但与此同时也有人向我反馈了不少建议,比如说:

  • 能否提供一个一键可使用的库?

  • 能否支持断点续传下载功能?

出于以上的建议, 同时也是为了能够更加完善我的XUpdate生态圈,于是我抽出一点时间,简单地实现了一个XUpdate拓展库 XUpdateAPI, 项目的地址如下:

https://github.com/xuexiangjys/XUpdateAPI

项目介绍

为了方便大家更快地使用XUpdate, 降低集成的难度,我编写了这个配套的拓展库。本库目前包含如下两部分内容:

  • EasyUpdate: 提供快速接入XUpdate的功能,无需初始化便可直接使用。

  • AriaDownloader: 提供断点续传下载的功能。

集成指南

添加Gradle依赖

1.先在项目根目录的 build.gradle 的 repositories 添加:

allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}

2.然后在dependencies添加:

   implementation 'com.github.xuexiangjys:XUpdate:2.0.6'
implementation 'com.github.xuexiangjys:XUpdateAPI:xupdate-easy:1.0.0'
// 如果需要使用断点续传下载功能的话添加该依赖(可选)
implementation 'com.github.xuexiangjys:XUpdateAPI:xupdate-downloader-aria:1.0.0'

3.自定义初始化配置(可选)

因为本库采取了自动初始化的功能,因此你无需进行初始化,但是如果你需要自定义初始化配置的话,你可以实现 IUpdateConfigProvider ,并在 ApplicationattachBaseContext 前调用 EasyUpdate.setUpdateConfigProvider 方法设置自定义配置。

    @Override
protected void attachBaseContext(Context base) {
// 实现自定义配置
EasyUpdate.setUpdateConfigProvider(new CustomUpdateConfigProvider());
super.attachBaseContext(base);
}

4.开启断点续传下载功能(可选)

  • 方法一: 在自定义配置中设置下载代理

UpdateConfig.create()
// 开启断点续传下载功能
.setDownloadServiceProxy(new AriaDownloadServiceProxyImpl(context))
  • 方法二: 使用 AriaDownloader.enable 开启
AriaDownloader.enable(this);
  • 方法三: 使用 AriaDownloader.getUpdateHttpService 获取下载服务
EasyUpdate.create(getContext(), Constants.UPDATE_DEFAULT_URL)
.updateHttpService(AriaDownloader.getUpdateHttpService(getContext()))

注意事项

需要注意的是,在使用 EasyUpdate 的时候,务必保证服务器返回的json格式应包括如下内容:

{
"Code": 0, //0代表请求成功,非0代表失败
"Msg": "", //请求出错的信息
"UpdateStatus": 1, //0代表不更新,1代表有版本更新,不需要强制升级,2代表有版本更新,需要强制升级
"VersionCode": 3,
"VersionName": "1.0.2",
"ModifyContent": "1、优化api接口。\r\n2、添加使用demo演示。\r\n3、新增自定义更新服务API接口。\r\n4、优化更新提示界面。",
"DownloadUrl": "https://raw.githubusercontent.com/xuexiangjys/XUpdate/master/apk/xupdate_demo_1.0.2.apk",
"ApkSize": 2048
"ApkMd5": "..." //md5值没有的话,就无法保证apk是否完整,每次都会重新下载。
}

如果你不想使用默认的json格式的话,可参考XUpdate中如何自定义版本更新解析器

使用方法

EasyUpdate主要提供了如下两个方法:

  • EasyUpdate.create: 构建版本更新检查管理者

  • EasyUpdate.checkUpdate: 直接版本更新

具体使用参见 EasyUpdateFragment。

当然XUpdate的所有方法也都是支持的,具体可以参考XUpdate的使用说明.

混淆配置

  • XUpdate

-keep class com.xuexiang.xupdate.entity.** { *; }

//注意,如果你使用的是自定义Api解析器解析,还需要给你自定义Api实体配上混淆,如下是本demo中配置的自定义Api实体混淆规则:
-keep class com.xuexiang.xupdatedemo.entity.** { *; }
  • AriaDownloader

-dontwarn com.arialyy.aria.**
-keep class com.arialyy.aria.**{*;}
-keep class **$$DownloadListenerProxy{ *; }
-keep class **$$UploadListenerProxy{ *; }
-keep class **$$DownloadGroupListenerProxy{ *; }
-keep class **$$DGSubListenerProxy{ *; }
-keepclasseswithmembernames class * {
@Download.* <methods>;
@Upload.* <methods>;
@DownloadGroup.* <methods>;
}

配套设置

  • XUpdate核心库: https://github.com/xuexiangjys/XUpdate

  • 后台版本更新管理服务: https://github.com/xuexiangjys/XUpdateService

  • 后台版本更新管理系统: https://github.com/xuexiangjys/xupdate-management

  • Flutter插件: https://github.com/xuexiangjys/flutter_xupdate

  • React-Native插件: https://github.com/xuexiangjys/react-native-xupdate

联系方式

更多资讯内容,欢迎扫描关注我的个人微信公众号:【我的Android开源之旅】

MnmER3I.jpg!mobile

点击下方“阅读原文”查看更多

点个 在看 你最好看


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK