AppUpdate icon indicating copy to clipboard operation
AppUpdate copied to clipboard

Android App update library. Android版本更新库,简单、轻量、可随意定制

English Doc

需要上架至GooglePlay的App请主动移除此SDK依赖,否则可能导致您的应用被下架或者封禁

由于Android Q版本限制后台应用启动Activity,所以下载完成会发送一个通知至通知栏(忽略showNotification的值,需要允许发送通知)

扫码加入QQ群(群号:828385813)

目录

  • 效果图
  • 功能介绍
  • Demo下载体验
  • 使用步骤
  • 使用技巧
  • 版本更新记录

效果图

     

功能介绍

  • [x] 支持Kotlin
  • [x] 支持AndroidX
  • [x] 支持后台下载
  • [x] 支持强制更新
  • [x] 支持自定义下载过程
  • [x] 支持Android4.1及以上版本
  • [x] 支持通知栏进度条展示(或者自定义显示进度)
  • [x] 支持中文/繁体/英文语言(国际化)
  • [x] 支持自定义内置对话框样式
  • [x] 支持取消下载(如果发送了通知栏消息,则会移除)
  • [x] 支持下载完成 打开新版本后删除旧安装包文件
  • [x] 不需要申请存储权限
  • [x] 使用HttpURLConnection下载,未集成其他第三方框架

Demo下载体验

点击下载Demo进行体验

使用步骤

第一步:

添加maven仓库地址
gradle:7.0.0以下
  • root/build.gradle添加如下代码
allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
gradle:7.0.0或以上
  • setting.gradle中添加如下代码
dependencyResolutionManagement {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
app/build.gradle添加依赖
implementation 'com.github.azhon:AppUpdate:4.2.2'

第二步:创建DownloadManager,更多用法请查看这里示例代码

val manager = DownloadManager.Builder(this).run {
    apkUrl("your apk url")
    apkName("appupdate.apk")
    smallIcon(R.mipmap.ic_launcher)
    //设置了此参数,那么内部会自动判断是否需要显示更新对话框,否则需要自己判断是否需要更新
    apkVersionCode(2)
    //同时下面三个参数也必须要设置
    apkVersionName('v4.2.2')
    apkSize("7.7MB")
    apkDescription("更新描述信息(取服务端返回数据)")
    //省略一些非必须参数...
    build()
}
manager?.download()

如果需要显示内置的对话框那么你需要调用builder.apkVersionCode()将新版本的versionCode填进去

第三步:混淆打包,只需保持ActivityService不混淆

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Service

使用技巧

  • 框架内部支持国际化(其他语言只需要在对应的string.xml中取相同的名字即可)
  • 如果你需要修改框架内部的一些文字,你只需要在string.xml中取相同的名字即可以覆盖框架内设定的
  • 查看版本库中的Log只需要过滤AppUpdate开头的Tag
  • 支持校验安装包的MD5避免重复下载,只需要Builder设置安装包的MD5即可
  • 下载完成 打开新版本后删除旧安装包文件,实现思路请移步此处
//旧版本apk的文件保存地址
val result = ApkUtil.deleteOldApk(this, "${externalCacheDir?.path}/appupdate.apk")
  • 温馨提示:升级对话框中的内容是可以上下滑动的哦!
  • 如果需要实现自己一套下载过程,只需要继承BaseHttpDownloadManager
class MyDownload : BaseHttpDownloadManager() {}

版本更新记录

  • v4.2.2(2022/08/05)

    • [优化] 优化升级对话框文本内容,移除多余符号
    • [修复] 修复多次调用下载参数未生效bug
  • 更多更新记录点此查看

赞赏

如果这个库有帮助到你并且你很想支持库的后续开发和维护,那么你可以扫描下方二维码随意打赏我,我将不胜感激赞赏列表