Flutter应用版本更新插件release_updater的使用

Flutter应用版本更新插件release_updater的使用

插件简介

release_updater 是一个用于Flutter和Dart项目的库,它提供了自动更新发布/安装文件到本地目录的简单方法。它还带有内置的CLI工具,可以轻松生成发布包(Zip文件)或为多个平台提供发布文件。

使用方法

添加依赖

pubspec.yaml中添加release_updater依赖:

dependencies:
  release_updater: ^latest_version

示例代码

下面是一个完整的示例demo,展示了如何使用release_updater进行应用更新:

import 'dart:io';
import 'package:release_updater/release_updater_io.dart';

void main() async {
  // 定义存储位置
  var storage = ReleaseStorageDirectory('appx', Directory('/install/path'));

  // 定义更新源URL
  var provider = ReleaseProviderHttp.baseURL('https://your.domain/appx/releases');

  // 创建ReleaseUpdater实例
  var releaseUpdater = ReleaseUpdater(storage, provider);

  print('»  Updating...');
  // 执行更新操作
  var updatedToVersion = await releaseUpdater.update(verbose: true);

  if (updatedToVersion != null) {
    print('»  Updated to version: $updatedToVersion');
  }

  // 运行更新后的可执行文件
  var runResult = await releaseUpdater.runReleaseProcess('run.exe', ['-a']);

  var exitCode = runResult!.exitCode;

  print('»  Exit code: $exitCode');
  print('»  Result: ${runResult.stdout}');

  exit(exitCode);
}

自定义ReleaseProvider

你可以实现自己的ReleaseProvider,或者直接使用内置的ReleaseProviderHttp类。例如:

var provider = ReleaseProviderHttp.baseURL('https://your.domain/appx/releases');

CLI工具

release_updater

这是一个CLI工具,用于构建和上传发布包。例如:

$> release_packer release_packer.json build ./source-dir ./releases-dir -Pupload-url=http://your-server:8090/ -Pupload-user=userx -Pupload-pass=pass123

release_updater_server

这是一个简单的HTTP服务器,用于提供发布文件。启动服务器:

$> release_updater_server releases-server-config.json

配置文件示例:

{
  "releases-directory": "/path/to/releases",
  "port": 8090,
  "address": "0.0.0.0",
  "upload-user": "userx",
  "upload-pass": "123456"
}

更多信息

通过这些工具和API,您可以轻松地管理跨平台的应用发布和自动更新,提高开发效率并确保用户始终使用最新版本的应用程序。


更多关于Flutter应用版本更新插件release_updater的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter应用版本更新插件release_updater的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter应用中使用release_updater插件来实现版本更新功能的示例代码。这个插件可以帮助你检查应用的最新版本,并提示用户进行更新。

首先,你需要在你的pubspec.yaml文件中添加release_updater依赖:

dependencies:
  flutter:
    sdk: flutter
  release_updater: ^x.y.z  # 请替换为最新的版本号

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter应用中,你可以按照以下步骤来使用release_updater插件:

  1. 初始化插件: 在你的main.dart文件或者某个合适的初始化位置,初始化ReleaseUpdater插件。
import 'package:flutter/material.dart';
import 'package:release_updater/release_updater.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    ReleaseUpdater.init(
      androidAppId: 'com.example.yourapp', // 替换为你的Android应用ID
      iosAppId: '123456789',               // 替换为你的iOS应用ID(通常是App Store的ID)
      // 其他可选参数,比如通知文案等
    );

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Version Checker'),
        ),
        body: Center(
          child: VersionCheckerScreen(),
        ),
      ),
    );
  }
}
  1. 创建一个屏幕来检查版本: 创建一个新的屏幕(或Widget),用于检查版本并显示更新提示。
import 'package:flutter/material.dart';
import 'package:release_updater/release_updater.dart';

class VersionCheckerScreen extends StatefulWidget {
  @override
  _VersionCheckerScreenState createState() => _VersionCheckerScreenState();
}

class _VersionCheckerScreenState extends State<VersionCheckerScreen> {
  String latestVersion = '';
  bool isNewVersionAvailable = false;

  @override
  void initState() {
    super.initState();
    checkForUpdates();
  }

  void checkForUpdates() async {
    try {
      bool hasUpdate = await ReleaseUpdater.checkForUpdate();
      if (hasUpdate) {
        String? version = await ReleaseUpdater.latestVersion;
        setState(() {
          latestVersion = version ?? '';
          isNewVersionAvailable = true;
        });
      }
    } catch (e) {
      print('Error checking for updates: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        if (isNewVersionAvailable)
          Text('A new version ($latestVersion) is available!'),
        else
          Text('You are using the latest version.'),
        ElevatedButton(
          onPressed: () async {
            if (isNewVersionAvailable) {
              try {
                bool success = await ReleaseUpdater.openStorePage();
                if (success) {
                  print('User redirected to store page.');
                } else {
                  print('Failed to redirect user to store page.');
                }
              } catch (e) {
                print('Error opening store page: $e');
              }
            }
          },
          child: Text('Update Now'),
        ),
      ],
    );
  }
}
  1. 处理平台特定的配置
    • 对于Android,确保你的AndroidManifest.xml中有正确的权限配置,并且你的应用已经发布到Google Play Store。
    • 对于iOS,确保你的应用已经发布到App Store,并且你已经在Info.plist中配置了必要的权限。

这个示例代码展示了如何初始化release_updater插件,检查是否有新版本可用,并在有新版本时提示用户进行更新。请根据你的具体需求调整代码,比如添加更多的错误处理或UI优化。

回到顶部