Android版本更新

作者: A大心 | 来源:发表于2019-11-22 14:22 被阅读0次

    UpdateAppUtils2.0

    一行代码,快速实现app在线下载更新 A simple library for Android update app

    UpdateAppUtils2.0 特点

    • Kotlin First,Kotlin开发
    • 支持AndroidX
    • 支持Md5签名验证
    • 支持自定义任意UI
    • 适配中英文
    • 适配至Android9.0
    • 通知栏图片自定义
    • 支持修改是否每次显示弹窗(非强更)
    • 支持安装完成后自动删除安装包

    UpdateAppUtils2.0功能结构变化巨大,建议使用2.0以上版本;2.0以前版本文档

    效果图

    image image image image image image

    集成

    repositories {
       jcenter()    
    }
    
    // Support
    implementation 'com.teprinciple:updateapputils:2.0.2'
    
    // AndroidX
    implementation 'com.teprinciple:updateapputilsX:2.0.2'
    
    

    使用

    下面为kotlin使用示例,Java示例请参考JavaDemo

    1、快速使用

     UpdateAppUtils
            .getInstance()
            .apkUrl(apkUrl)
            .updateTitle(updateTitle)
            .updateContent(updateContent)
            .update()
    
    

    2、多配置使用

        // ui配置
        val uiConfig = UiConfig().apply {
            uiType = UiType.PLENTIFUL
            cancelBtnText = "下次再说"
            updateLogoImgRes = R.drawable.ic_update
            updateBtnBgRes = R.drawable.bg_btn
            titleTextColor = Color.BLACK
            titleTextSize = 18f
            contentTextColor = Color.parseColor("#88e16531")
        }
    
        // 更新配置
        val updateConfig = UpdateConfig().apply {
            force = true
            checkWifi = true
            needCheckMd5 = true
            isShowNotification = true
            notifyImgRes = R.drawable.ic_logo
            apkSavePath = Environment.getExternalStorageDirectory().absolutePath +"/teprinciple"
            apkSaveName = "teprinciple"
        }
    
        UpdateAppUtils
            .getInstance()
            .apkUrl(apkUrl)
            .updateTitle(updateTitle)
            .updateContent(updateContent)
            .updateConfig(updateConfig)
            .uiConfig(uiConfig)
            .setUpdateDownloadListener(object : UpdateDownloadListener{
                // do something
            })
            .update()
    
    

    3、md5校验说明

    为了保证app的安全性,避免apk被二次打包的风险。UpdateAppUtils内部提供了对签名文件md5值校验的接口;
    首先你需要保证当前应用和服务器apk使用同一个签名文件进行了签名(一定要保管好自己的签名文件,否则检验就失去了意义),
    然后你需要将UpdateConfig 的 needCheckMd5 设置为true,并在Md5CheckResultListener监听中,监听校验返回结果。具体使用可参考
    CheckMd5DemoActivity

    UpdateAppUtils
           .getInstance()
           .apkUrl(apkUrl)
           .updateTitle(updateTitle)
           .updateContent(updateContent)
           .updateConfig(updateConfig) // needCheckMd5设置为true
           .setMd5CheckResultListener(object : Md5CheckResultListener{
               override fun onResult(result: Boolean) {
                   // true:检验通过,false:检验失败
               }
           })
    
    

    4、自定义UI

    UpdateAppUtils内置了两套UI,你可以通过修改UiConfig进行UI内容的自定义;
    当然当内部UI模板与你期望UI差别很大时,你可以采用完全自定义UI

    5、删除已安装APK

    UpdateAppUtils在应用启动时,通过对比当前应用和已下载apk的VersionCode是否相同来判断已下载apk是否已安装;
    如果两者VersionCode相同则认为apk已经安装,应被删除。

    // 在Application或者MainActivity中调用,以达到安装成功启动后删除已安装apk
     UpdateAppUtils.getInstance().deleteInstalledApk()
    
    

    Api说明

    1、UpdateAppUtils Api

    api 说明 默认值 必须设置
    fun apkUrl(apkUrl: String) 更新包服务器url null true
    fun update() UpdateAppUtils入口 - true
    fun updateTitle(title: String) 更新标题 版本更新啦! false
    fun updateContent(content: String) 更新内容 发现新版本,立即更新 false
    fun updateConfig(config: UpdateConfig) 更新配置 查看源码 false
    fun uiConfig(uiConfig: UiConfig) 更新弹窗UI配置 查看源码 false
    fun setUpdateDownloadListener() 下载过程监听 null false
    fun setMd5CheckResultListener() md5校验结果回调 null false
    fun setOnInitUiListener() 初始化更新弹窗UI回调 null false
    fun deleteInstalledApk() 删除已安装的apk - false

    2、UpdateConfig:更新配置说明

    属性 说明 默认值
    isDebug 是否输出【UpdateAppUtils】为Tag的日志 true
    force 是否强制更新,强制时无取消按钮 false
    apkSavePath apk下载存放位置 包名目录
    apkSaveName apk保存文件名 项目名
    downloadBy 下载方式 DownLoadBy.APP
    needCheckMd5 是否需要校验apk签名md5 false
    checkWifi 检查是否wifi false
    isShowNotification 是否显示通知栏进度 true
    notifyImgRes 通知栏图标 项目icon
    serverVersionName 服务器上apk版本名
    serverVersionCode 服务器上apk版本号
    alwaysShow 是否每次显示更新弹窗(非强更) true
    thisTimeShow 本次是否显示更新弹窗(非强更) false
    showDownloadingToast 开始下载时是否显示Toast true

    3、UiConfig:更新弹窗Ui配置说明

    属性 说明 默认值
    uiType ui模板 UiType.SIMPLE
    customLayoutId 自定义布局id false
    updateLogoImgRes 更新弹窗logo图片资源id -
    titleTextSize 标题字体大小 16sp
    titleTextColor 标题字体颜色 -
    contentTextSize 内容字体大小 14sp
    contentTextColor 内容字体颜色 -
    updateBtnBgColor 更新按钮背景颜色 -
    updateBtnBgRes 更新按钮背景资源id -
    updateBtnTextColor 更新按钮字体颜色 -
    updateBtnTextSize 更新按钮文字大小 14sp
    updateBtnText 更新按钮文案 立即更新
    cancelBtnBgColor 取消按钮背景颜色 -
    cancelBtnBgRes 取消按钮背景资源id -
    cancelBtnTextColor 取消按钮文字颜色 -
    cancelBtnTextSize 取消按钮文字大小 14sp
    cancelBtnText 取消按钮文案 暂不更新
    downloadingToastText 开始下载时的Toast提示文字 更新下载中...
    downloadingBtnText 下载中 下载按钮以及通知栏标题前缀,进度自动拼接在后面 下载中
    downloadFailText 下载出错时,下载按钮及通知栏标题 下载出错,点击重试

    项目地址:https://github.com/teprinciple/UpdateAppUtils

    相关文章

      网友评论

        本文标题:Android版本更新

        本文链接:https://www.haomeiwen.com/subject/axxqwctx.html