Andorid|UpdateAppUtils软件快速更新框架的使用方法

实现效果

添加依赖

repositories {
   jcenter()
}

根据自己使用的APP的框架选用不同的包引入:

dependencies {
    // For developers using AndroidX in their applications
    implementation 'com.teprinciple:updateapputilsx:2.3.0'
 
    // For developers using the Android Support Library
    implementation 'com.teprinciple:updateapputils:2.3.0'
}

声明权限

AndroidManifest.xml文件中声明所需要的动态权限:

    <uses-permission android:name="android.permission.INTERNET">uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">uses-permission>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE">uses-permission>

初始化

这三个变量可通过服务器实现从数据库中获取,本文只是写死了地址还没有实现服务端功能…

首先需要定义三个全局变量,也可以选择直接写到方法里:

    //APK的地址
    private String apkUrl = "此处填写APK地址";
    //更新弹窗标题
    private String updateTitle = "发现新版本";
    //更新弹窗简介
    private String updateContent = "1、...\n2、...\n3、更多功能等你探索";

Activity中的*onCreate()*方法中初始化框架:

		//初始化
        UpdateAppUtils.init(this);

实现功能

可以写进一个方法来调用也可直接写在Activity中的*onCreate()*方法中实现:

    public void UpdateApp(){

        //更新配置信息
        UpdateConfig updateConfig = new UpdateConfig();
        //检查Wifi状态
        updateConfig.setCheckWifi(true);
        //开启MD5校验
        updateConfig.setNeedCheckMd5(true);
        //开启下载进度条
        updateConfig.setAlwaysShowDownLoadDialog(true);
        //关闭通知栏进度条
        updateConfig.setShowNotification(false);
        //关闭下载提示框
        updateConfig.setShowDownloadingToast(false);

        //UI配置信息
        UiConfig uiConfig = new UiConfig();
        uiConfig.setUiType(UiType.PLENTIFUL);

        //功能Api
        UpdateAppUtils
                .getInstance()
                .apkUrl(apkUrl)
                .updateTitle(updateTitle)
                .updateContent(updateContent)
                .uiConfig(uiConfig)
                .updateConfig(updateConfig)
                .setMd5CheckResultListener(new Md5CheckResultListener() {
                    @Override
                    public void onResult(boolean result) {
                        if(result == false) {
                            Toast.makeText(MainActivity.this, "Md5检验未通过,请晚些再更新!", Toast.LENGTH_SHORT).show();
                        }
                    }
                })
                .update();
    }

框架其余Api说明:

1、UpdateAppUtils Api

api 说明 默认值 必须设置
funapkUrl(apkUrl:String) 更新包服务器url null true
funupdate() UpdateAppUtils入口 - true
funupdateTitle(title:String) 更新标题 版本更新啦! false
funupdateContent(content:String) 更新内容 发现新版本,立即更新 false
funupdateConfig(config:UpdateConfig) 更新配置 查看源码 false
funuiConfig(uiConfig:UiConfig) 更新弹窗UI配置 查看源码 false
funsetUpdateDownloadListener() 下载过程监听 null false
funsetMd5CheckResultListener() md5校验结果回调 null false
funsetOnInitUiListener() 初始化更新弹窗UI回调 null false
fundeleteInstalledApk() 删除已安装的apk - false
funsetCancelBtnClickListener() 暂不更新按钮点击监听 - false
funsetUpdateBtnClickListener() 立即更新按钮点击监听 - 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
alwaysShowDownLoadDialog 是否需要显示更新下载进度弹窗(非强更) 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 下载出错时,下载按钮及通知栏标题 下载出错,点击重试

所有代码

注释已经写的很详细了,其余就不做赘述了,以下是全部代码:

package com.example.updatedemo;

import androidx.appcompat.app.AppCompatActivity;
import constant.UiType;
import listener.Md5CheckResultListener;
import model.UiConfig;
import model.UpdateConfig;
import update.UpdateAppUtils;

import android.os.Bundle;
import android.widget.Toast;

import org.jetbrains.annotations.NotNull;

/**
 *
 * @author 纸鱼
 * @since 2022-11-07 22:50
 *
 */
public class MainActivity extends AppCompatActivity {

    //APK的地址
    private String apkUrl = "此处填写APK地址";
    //更新弹窗标题
    private String updateTitle = "发现新版本";
    //更新弹窗简介
    private String updateContent = "1、...\n2、...\n3、更多功能等你探索";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初始化
        UpdateAppUtils.init(this);

        UpdateApp();

    }

    public void UpdateApp(){

        //更新配置信息
        UpdateConfig updateConfig = new UpdateConfig();
        //检查Wifi状态
        updateConfig.setCheckWifi(true);
        //开启签名文件MD5校验
        updateConfig.setNeedCheckMd5(true);
        //开启下载进度条
        updateConfig.setAlwaysShowDownLoadDialog(true);
        //关闭通知栏进度条
        updateConfig.setShowNotification(false);
        //关闭下载提示框
        updateConfig.setShowDownloadingToast(false);

        //UI配置信息
        UiConfig uiConfig = new UiConfig();
        uiConfig.setUiType(UiType.PLENTIFUL);

        //功能Api
        UpdateAppUtils
                .getInstance()
                .apkUrl(apkUrl)
                .updateTitle(updateTitle)
                .updateContent(updateContent)
                .uiConfig(uiConfig)
                .updateConfig(updateConfig)
                .setMd5CheckResultListener(new Md5CheckResultListener() {
                    @Override
                    public void onResult(boolean result) {
                        if(result == false) {
                            Toast.makeText(MainActivity.this, "Md5检验未通过,请晚些再更新!", Toast.LENGTH_SHORT).show();
                        }
                    }
                })
                .update();
    }
}

结语

作者给的Api表格里的功能以及UI样式很全,可根据需要自行定制,如果对UI风格不满意可以去作者的GitHub上看自定义UI的教程。
UpdateAppUtils框架GitHub地址:https://github.com/teprinciple/UpdateAppUtils

你可能感兴趣的:(Andorid,android)