flutter_xupdate 一键实现 Flutter 应用版本更新

前言

自 2018 年我开源了 XUpdate 之后,至今已迭代了 14 个版本,月下载量达 4k+,Github 的 star 量也已经有 700+.

最近在研究 Flutter,于是就随手写了一个 Flutter 小项目练练手,在写的时候我就发现,目前并没有非常好用的版本更新 Flutter 插件,尝试了使用 Bugly 的版本更新 Flutter 插件,但是效果非常不好。然后百度了一下,基本上都是如下方案:

我想了一下,这实在是太麻烦了,要知道我的 XUpdate 把这些都已经做好了,只需要一行代码就可以实现应用内的版本更新,不仅如此我们完全没必要把这个几乎通用的功能在自己的应用内再实现一遍。

为此我仔细研究了一下 Flutter 的插件开发,用了不到 1 天的时间,就把 XUpdate 的绝大多数功能在 Flutter 插件上实现了,这下我就可以舒舒服服地使用一行代码来实现版本更新了!

下面我给出 flutter_xupdate 插件的地址:

https://pub.dev/packages/flutter_xupdate


演示


快速集成指南

添加引用依赖

在你的 Flutter 项目中的 pubspec.yaml 文件中添加 flutter_xupdate 依赖。

dependencies:
  flutter_xupdate: ^0.0.1
dependencies:
  flutter_xupdate:
    git:
      url: git://github.com/xuexiangjys/flutter_xupdate.git
      ref: master

Android 设置

修改 Android 项目的主题为 AppCompat 主题,文件路径: android/app/src/main/res/values/styles.xml, 例如:

<resources>
    <style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@drawable/launch_background</item>
    </style>
</resources>

初始化

import 'package:flutter_xupdate/flutter_xupdate.dart';

   ///初始化
   void initXUpdate() {
     if (Platform.isAndroid) {
       FlutterXUpdate.init(
         ///是否输出日志
         debug: true,
         ///是否使用post请求
         isPost: false,
         ///post请求是否是上传json
         isPostJson: false,
         ///是否开启自动模式
         isWifiOnly: false,
         ///是否开启自动模式
         isAutoMode: false,
         ///需要设置的公共参数
         supportSilentInstall: false,
         ///在下载过程中,如果点击了取消的话,是否弹出切换下载方式的重试提示弹窗
         enableRetry: false
       ).then((value) {
         updateMessage("初始化成功: $value");
       }).catchError((error) {
         print(error);
       });

       FlutterXUpdate.setErrorHandler(
           onUpdateError: (Map<String, dynamic> message) async {
         print(message);
         setState(() {
           _message = "$message";
         });
       });
     } else {
       updateMessage("ios暂不支持XUpdate更新");
     }
   }

使用说明

版本更新返回的 JSON 格式

{
  "Code": 0, //0代表请求成功,非0代表失败
  "Msg": "", //请求出错的信息
  "UpdateStatus": 1, //0代表不更新,1代表有版本更新,不需要强制升级,2代表有版本更新,需要强制升级
  "VersionCode": 3, //编译版本号(唯一)
  "VersionName": "1.0.2", //版本名(用于展示)
  "ModifyContent": "1、优化api接口。\r\n2、添加使用demo演示。\r\n3、新增自定义更新服务API接口。\r\n4、优化更新提示界面。", //更新内容
  "DownloadUrl": "https://raw.githubusercontent.com/xuexiangjys/XUpdate/master/apk/xupdate_demo_1.0.2.apk",// 文件下载地址
  "ApkSize": 2048, //文件的大小(单位:kb)
  "ApkMd5": "..."  //md5值没有的话,就无法保证apk是否完整,每次都会重新下载。框架默认使用的是md5加密。
}

版本更新

FlutterXUpdate.checkUpdate(url: _updateUrl);
FlutterXUpdate.checkUpdate(url: _updateUrl, supportBackgroundUpdate: true);
FlutterXUpdate.checkUpdate(url: _updateUrl, widthRatio: 0.6);
FlutterXUpdate.checkUpdate(url: _updateUrl, isAutoMode: true);
FlutterXUpdate.checkUpdate(
      url: _updateUrl,
      overrideGlobalRetryStrategy: true,
      enableRetry: true,
      retryContent: "Github下载速度太慢了,是否考虑切换蒲公英下载?",
      retryUrl: "https://www.pgyer.com/flutter_learn");

关联链接

微信公众号

交流群

  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    110 引用 • 701 回帖 • 1 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    30 引用 • 79 回帖 • 4 关注

赞助商 我要投放

回帖
请输入回帖内容 ...