• Stars
    star
    2,252
  • Rank 20,452 (Top 0.5 %)
  • Language
    Kotlin
  • License
    Apache License 2.0
  • Created almost 7 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

English Doc

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

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

目录

效果图

     

功能介绍

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

Demo下载体验

点击下载Demo进行体验

使用步骤

第一步:app/build.gradle添加依赖

implementation 'io.github.azhon:appupdate:4.2.9'
由于GooglePlay政策禁止应用内更新,所以可以通过多渠道的方式进处理
android {
    //...
    productFlavors {
        other {}
        googlePlay {}
    }
}

dependencies {
    otherImplementation 'io.github.azhon:appupdate:latest-version'
    googlePlayImplementation 'io.github.azhon:appupdate-no-op:latest-version'
}

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

如果需要显示内置的对话框那么你需要调用builder.apkVersionCode()将新版本的versionCode填进去,同时值必须大于当前版本的

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()

第三步:混淆打包,只需保持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() {}

版本更新记录

赞赏

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