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

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

背景


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


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


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


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

github.com/xuexiangjys…


项目介绍


为了方便大家更快地使用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>;
}


配套设置







相关文章
|
1月前
|
XML 缓存 Android开发
Android开发,使用kotlin学习多媒体功能(详细)
Android开发,使用kotlin学习多媒体功能(详细)
94 0
|
3月前
|
安全 Linux Android开发
Android 安全功能
Android 安全功能
37 0
|
3月前
|
存储 算法 Android开发
AVB校验微观版本:android avb(Android Verified Boot)验证
AVB校验微观版本:android avb(Android Verified Boot)验证
212 0
|
4月前
|
XML 前端开发 Java
Android App实战项目之实现手写签名APP功能(附源码,简单易懂 可直接实用)
Android App实战项目之实现手写签名APP功能(附源码,简单易懂 可直接实用)
45 0
|
28天前
|
运维 监控 Java
应用研发平台EMAS产品常见问题之安卓构建版本失败如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
1月前
|
监控 安全 Android开发
安卓发展历程和主要版本的简要介绍
安卓发展历程和主要版本的简要介绍
31 1
|
3月前
|
Android开发
Android的一丢丢版本常识
Android的一丢丢版本常识
30 0
|
3月前
|
开发工具 Android开发
Android获取SDK的版本信息
Android获取SDK的版本信息
38 0
|
4月前
|
编解码 Ubuntu Java
Android 编译Android7.0版本源码
Android 编译Android7.0版本源码
|
4月前
|
API Android开发 开发者
Android Studio Electric Eel | 2022.1.1 版本
Android Studio Electric Eel | 2022.1.1 版本