美文网首页
App更新库(一键更新)

App更新库(一键更新)

作者: 玖玖君 | 来源:发表于2019-12-05 17:44 被阅读0次

冲浪时看到一个非常简便的APP更新库,下面让我们一起来实现一下吧。

1-1导入Gradle
implementation 'com.azhon:appupdate:2.6.0'
如果版本是AndroidX的话还需加入下方依赖
implementation 'com.azhon:appupdateX:2.6.0'
1-2创建DownloadManager
DownloadManager manager = DownloadManager.getInstance(this);
manager.setApkName("appupdate.apk")
        .setApkUrl("https://raw.githubusercontent.com/azhon/AppUpdate/master/apk/appupdate.apk")
        .setSmallIcon(R.mipmap.ic_launcher)
        //可设置,可不设置
        .setConfiguration(configuration)
        .download();
1-3在Activity中的使用
  //用本地Dialog进行更新操作
     private void Update_One() {
            new AlertDialog.Builder(getActivity())
                    .setTitle("更新")
                    .setMessage("提示")
                    .setPositiveButton("升级", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            mNumberProgressBar.setProgress(0);
                            manager = DownloadManager.getInstance(getActivity());
                            manager.setApkName("xuidemo.apk")
                                    .setApkUrl(url)
                                    .setSmallIcon(R.mipmap.ic_launcher)
                                    .download();
                        }
                    }).create().show();
    }
    //后台更新
        manager = DownloadManager.getInstance(MainActivity.this);
        manager.setApkName("ESFileExplorer.apk")
                .setApkUrl(url)
                .setSmallIcon(R.mipmap.ic_launcher)
                .download();

   //使用依赖库进行更新
    private void Update_two() {
        UpdateConfiguration configuration = new UpdateConfiguration()
                //输出错误日志
                .setEnableLog(true)
                //设置自定义的下载
                //.setHttpManager()
                //下载完成自动跳动安装页面
                .setJumpInstallPage(true)
                //设置对话框背景图片 (图片规范参照demo中的示例图)
                //.setDialogImage(R.drawable.ic_dialog)
                //设置按钮的颜色
                //.setDialogButtonColor(Color.parseColor("#E743DA"))
                //设置对话框强制更新时进度条和文字的颜色
                //.setDialogProgressBarColor(Color.parseColor("#E743DA"))
                //设置按钮的文字颜色
                .setDialogButtonTextColor(Color.WHITE)
                //设置是否显示通知栏进度
                .setShowNotification(true)
                //设置是否提示后台下载toast
                .setShowBgdToast(false)
                //设置强制更新
                .setForcedUpgrade(false)
                //设置对话框按钮的点击监听
                .setButtonClickListener(new OnButtonClickListener() {
                    @Override
                    public void onButtonClick(int id) {
                        Log.e("TAG", String.valueOf(id));
                    }
                })
                //设置下载过程的监听
                .setOnDownloadListener(new OnDownloadListener() {
                    @Override
                    public void start() {

                    }

                    @Override
                    public void downloading(int max, int progress) {
                        int curr = (int) (progress / (double) max * 100.0);
                        mNumberProgressBar.setMax(100);
                        mNumberProgressBar.setProgress(curr);
                    }

                    @Override
                    public void done(File apk) {

                    }

                    @Override
                    public void cancel() {

                    }

                    @Override
                    public void error(Exception e) {

                    }
                });
        manager = DownloadManager.getInstance(getActivity());

        manager.setApkName("ESFileExplorer.apk")
                .setApkUrl(url)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setShowNewerToast(true)
                .setConfiguration(configuration)
                .setApkVersionCode(2)
                .setApkVersionName("2.1.8")
                .setApkSize("20.4")
                .setApkDescription("支持AndroidX")
//                .setApkMD5("DC501F04BBAA458C9DC33008EFED5E7F")
                .download();
    }

1-3-1取消下载操作
                if (manager != null) {
                    manager.cancel();
                }
1-4兼容Android N 及以上版本,在你应用的Manifest.xml添加如下代码
<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="${applicationId}"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths_public" />
</provider>
资源文件res/xml/file_paths_public.xml内容
<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-path
        name="app_update_external"
        path="/" />
    <external-cache-path
        name="app_update_cache"
        path="/" />
</paths>
混淆打包,只需保持Activity、Service不混淆
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Service

配置文档 点击走起

文章很短,路还漫长,大家好,我是玖玖君,一个帅气与才华并存的男人,我们下期再见。

相关文章

网友评论

      本文标题:App更新库(一键更新)

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