Flutter发布管理插件flutter_release_x的使用

发布于 1周前 作者 vueper 来自 Flutter

Flutter发布管理插件flutter_release_x的使用

Flutter Release X

Pub Version Pub Points Issues License

Flutter Release X 是一个强大的命令行工具,可以简化您的Flutter应用程序发布流程。它旨在提高效率和易用性,允许您:

  • 简化工作流:用一条命令代替复杂的CI/CD管道,轻松生成和分发发布构建。
  • 无缝云集成:通过提供API密钥和令牌轻松配置GitHub、Google Drive、AWS等云平台。一旦配置完成,享受无烦恼的自动上传。
  • 即时分发:自动生成二维码和下载链接,使您可以快速轻松地将构建分发给团队或用户。

使用 Flutter Release X,您可以简化发布流程,增强协作,并缩短上市时间——同时专注于真正重要的事情:构建出色的应用程序。

功能概述

Feature Status Description
APK Builds ✅ Integrated 无缝APK构建过程完全集成。
GitHub Upload ✅ Integrated 直接上传到GitHub仓库,方便分享。
Google Drive Upload ✅ Integrated 将构建上传到Google Drive以确保安全的云存储。
Upload Link Generation ✅ Integrated 自动生成并分享构建的下载链接。
QR Code Generation ✅ Integrated 为快速访问构建下载链接生成二维码。
Slack Integration ✅ Integrated 直接在Slack频道中分享构建和更新。
iOS Builds 🚀 Coming Soon 即将推出iOS构建支持,简化应用程序部署。
Windows Builds 🚀 Coming Soon 即将推出Windows构建支持,实现跨平台兼容性。
macOS Builds 🚀 Coming Soon 即将推出macOS构建支持,满足Apple生态系统需求。
Linux Builds 🚀 Coming Soon 即将推出Linux构建支持,用于开源部署。
AWS S3 Upload 🚀 Coming Soon 与AWS S3集成,实现可扩展的云存储上传。
GitLab Upload 🚀 Coming Soon 直接上传到GitLab仓库,用于版本控制。
Google Play Store Upload 🚀 Coming Soon 简化向Google Play商店上传Android应用程序的过程。
Apple App Store Upload 🚀 Coming Soon 简化向Apple App Store上传iOS应用程序的过程。

安装

您可以使用 dart 全局安装 Flutter Release X:

dart pub global activate flutter_release_x

或者将其作为依赖项添加到您的 pubspec.yaml 文件中:

dart pub add flutter_release_x

使用

Flutter Release X 提供了简单的命令来构建、上传和管理您的发布。以下是主要命令:

Command Description
frx build 构建发布APK,上传到GitHub,并生成二维码和下载链接。
frx build -s 显示当前配置设置。这有助于验证您的设置是否正确。
frx build -c <path_to_config> 使用此标志指定自定义配置文件路径,覆盖默认的 config.yaml

示例

  1. 构建发布APK,上传到云,并生成二维码和下载链接:

    frx build
    
  2. 验证配置:

    frx build -s
    
  3. 指定自定义配置文件路径:

    frx build -c config/file/path
    

配置

创建一个 config.yaml 文件在项目的根目录中,以指定您的上传选项和二维码生成设置:

# Path to Flutter binary
# Example for Windows: C:/dev/flutter/bin/flutter.bat
# Example for macOS: /Users/USER_NAME/development/flutter/bin/flutter
flutter_path: FLUTTER/BINARY/PATH

upload_options:
  github:
    enabled: true
    token: YOUR_GITHUB_TOKEN # Required: Personal Access Token for GitHub
    repo: REPO/PATH # Required: GitHub repository path, e.g., RittikSoni/Flutter-Release-X
    tag: v0.0.1 # Release tag (e.g., version number)

  google_drive:
    enabled: true
    client_id: YOUR_CLIENT_ID # Required: Google API Client ID
    client_secret: YOUR_CLIENT_SECRET # Required: Google API Client Secret

  slack:
    enabled: true
    bot_user_oauth_token: YOUR_BOT_TOKEN # Required: Slack Bot OAuth Token, e.g., xoxb-XXXXXXXXX-XXXXXXXXX-XXXXXXXXXXXXX
    default_channel_id: CHANNEL_ID # Required: Slack channel ID, e.g., CXXXXXXXXX
    share_QR: true # Optional: Share QR code in Slack (default: true)
    share_link: true # Optional: Share build download link in Slack (default: true)
    custom_message: "🚀 Check out the latest build! Download your app now!" # Custom message to accompany the link
    mention_users: ["U0XXXXXXX", "U08XXXXXXXX"] # List of Slack user/member IDs to mention. Note: not username or display name.

# QR Code generation settings
qr_code:
  enabled: true # Whether to generate QR codes (true/false)
  save_file: true # Save the QR code image to the file system (true/false)
  show_in_command: true # Display QR code in the command line output (true/false)
  size: 256 # Size of the generated QR code (pixels)
  error_correction_level: low # Error correction level: low, medium, quartile, high
  save_path: "./release-qr-code.png" # File path to save the QR code image

设置步骤

  1. 配置 config.yaml 创建一个 config.yaml 文件,包含上述设置。如果您有自定义文件路径,可以使用 -c 标志指定。

  2. 生成云凭证 对于云上传(GitHub 或 Google Drive),请按照以下步骤操作:

    • GitHub 配置 在 GitHub 中生成个人访问令牌(PAT)并将其添加到 config.yaml 中。

    • Google Drive 配置 创建一个 Google Cloud 项目并启用 Google Drive API。生成 OAuth 2.0 凭据并将 client_idclient_secret 添加到 config.yaml 中。

  3. 运行工具 完成配置后,运行以下命令:

    frx build
    

    此命令将构建您的 Flutter 项目,上传它,并生成二维码和共享链接。

云集成

生成 GitHub 个人访问令牌

要使您的 Flutter CLI 工具能够在 GitHub 上上传和删除发布,请生成一个具有适当权限的 Personal Access Token (PAT)。请按照以下步骤创建和配置您的令牌。

生成 GitHub 令牌的步骤

  1. 打开 GitHub 令牌生成页面Generate GitHub Token

  2. 设置令牌名称: 在 Note 字段中输入描述性的名称,例如 Flutter Release X Token

  3. 选择范围: 在 Select scopes 下检查以下权限:

    • repo(对私有仓库的完全控制)
      • 包括对公共和私有仓库的访问权限,这是上传和删除发布的必要条件。
  4. 生成令牌: 点击页面底部的 Generate token 按钮。 立即复制令牌,因为您将无法再次查看它。

  5. 设置项目

    github:
      enabled: true
      token: YOUR_GITHUB_TOKEN
    

Google Drive 配置

要将文件上传到 Google Drive,请按照以下步骤设置凭据:

  1. 创建 Google Cloud 项目: 进入 Google Cloud Console。 创建一个新项目或选择现有项目。

  2. 启用 Drive API: 在 Google Cloud Console 中,导航到 APIs & Services > Library。 搜索 “Google Drive API” 并启用它。

  3. 创建 OAuth 2.0 凭据: 进入 APIs & Services > Credentials。 点击 Create Credentials 并选择 OAuth Client ID。 如果提示配置同意屏幕,请进行配置。 将应用类型设置为 Desktop App。 记下生成的 Client IDClient Secret

  4. 设置项目

    google_drive:
      enabled: true
      client_id: YOUR_CLIENT_ID
      client_secret: YOUR_CLIENT_SECRET
    

通过这些步骤,您的应用程序将能够使用客户端ID和密钥认证并上传文件到Google Drive。

Slack 配置指南

要配置 Slack,请按照以下简单步骤操作:

1. 创建 Slack 应用

  • 进入 Slack API: Your Apps 页面。
  • 点击 Create New App
  • 选择 From Scratch 并为您的应用命名(例如 “Build Notifier Bot”),并选择您的工作区。
  • 点击 Create App

2. 为应用添加范围

范围定义了应用将拥有的权限。为了上传二维码和共享 Flutter 构建下载链接,您需要添加以下范围:

上传文件

  • 进入 Slack 应用设置中的 OAuth & Permissions 页面。
  • Scopes 下找到名为 Bot Token Scopes 的部分。
  • 添加以下范围:
    • files:write — 允许您的应用上传文件。

发送聊天消息

  • 在相同的 Bot Token Scopes 部分下添加:
    • chat:write — 允许您的应用向频道发送消息。

3. 将应用安装到您的工作区

  • 添加所需范围后,滚动到 OAuth & Permissions 页面。
  • 点击 Install App to Workspace 按钮。
  • 您将被提示授权应用使用选定的权限。点击 Allow 继续。

4. 获取 Bot 用户 OAuth 令牌

安装应用后,您将收到一个 Bot User OAuth 令牌。此令牌是您的 Slack 配置所需的,用于上传文件和发送消息。

  • OAuth & Permissions 页面下,进入 OAuth Tokens & Redirect URLs,复制 Bot User OAuth Token(应类似于 xoxb-XXXXXXXXX-XXXXXXXXX-XXXXXXXXXXXXX)。
  • 这是您的 YOUR_BOT_TOKEN

5. 查找频道 ID

CHANNEL_ID 是 Slack 频道的唯一标识符,机器人将在其中发送消息和共享文件。

查找频道 ID

  • 进入您工作区中的目标频道。
  • 点击顶部的 频道名称 打开频道详情。
  • 在频道 URL 中,您会看到类似 https://app.slack.com/client/TXXXXXXXX/CXXXXXXXXX 的内容。
  • 最后一个 / 后面的部分(例如 CXXXXXXXXX)就是您的 CHANNEL_ID

6. 获取成员/用户 ID 以提及

如果您希望在 Slack 消息中提及特定用户,您需要他们的 Slack 用户 ID

查找用户的 ID

  • 打开用户的个人资料,点击其名称。
  • 点击三个点并选择 Copy Member Id(例如 UXXXXXXXX)即为用户的 User ID
  • 重复此操作以收集每个要提及的用户的 User ID

现在,您可以使用 YOUR_BOT_TOKENCHANNEL_IDmember_ids 在配置中自动化 Slack 文件上传和下载链接发送。

二维码配置

Flutter Release X 可以为快速分享生成二维码。二维码可以通过各种设置进行自定义。

Setting Description
enabled 启用或禁用二维码生成。(true/false)
save_file 保存二维码图像的标志。(true/false)
show_in_command 在命令行输出中显示二维码。(true/false)
size 二维码图像大小(例如,256)。
error_correction_level 错误校正级别(low, medium, quartile, high)。
save_path 保存二维码图像的文件路径。

参与贡献

❤️💙 喜欢使用 Flutter Release X?我们正在扩展其功能,并希望得到您的反馈!如果您有想法或想贡献代码,请查看我们的 GitHub 仓库并给项目点赞以示支持。

https://github.com/RittikSoni/Flutter-Release-X

让我们一起使 Flutter Release X 更加出色!🌟

许可证

本项目采用 MIT 许可证——请参阅 MIT LICENSE 文件了解详细信息。

联系我们

💡 有建议或想法? 我很乐意听到它们!
🐞 发现错误? 别担心,我会立即解决!

请随时联系我: 📧 电子邮件: contact.kingrittik@gmail.com
🌐 GitHub: Flutter Release X Repository
📺 YouTube: Learn Flutter & More with Rittik
📸 Instagram: @kingrittikofficial
📖 Medium: @kingrittik
☕️ 请我喝咖啡: @kingrittik


贡献者

欢迎加入我们!请查看 Contributing Guidelines 并提交您的拉取请求。

一起让 Flutter 开发更快、更轻松、更有趣吧!🎉

支持该包(可选)

如果您觉得这个包有用,可以通过点赞来免费支持它。您还可以通过以下方式支持该包:

Buy Me A Coffee


更多关于Flutter发布管理插件flutter_release_x的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter发布管理插件flutter_release_x的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中集成和使用flutter_release_x插件的详细步骤和代码示例。请注意,由于flutter_release_x并非一个广泛知名的官方或主流插件,我假设其功能类似于版本发布管理,并基于其可能的用途给出示例代码。如果flutter_release_x具有特定的API或功能,请参考其官方文档进行调整。

1. 添加依赖

首先,在pubspec.yaml文件中添加flutter_release_x插件的依赖。如果这是一个假设的插件名称,你需要替换为实际的插件名称和版本号。

dependencies:
  flutter:
    sdk: flutter
  flutter_release_x: ^x.y.z  # 替换为实际版本号

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

2. 导入插件

在你的Dart文件中导入该插件。

import 'package:flutter_release_x/flutter_release_x.dart';

3. 初始化插件

根据插件的文档,你可能需要在应用启动时初始化它。以下是一个假设的初始化过程:

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 假设有一个初始化方法
  FlutterReleaseX.initialize();
  
  runApp(MyApp());
}

4. 使用插件功能

假设flutter_release_x提供了版本检查、更新下载和安装等功能,以下是如何使用这些功能的示例代码。

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String releaseNotes = '';

  @override
  void initState() {
    super.initState();
    
    // 检查新版本
    _checkForUpdates();
  }

  Future<void> _checkForUpdates() async {
    try {
      // 假设有一个方法来检查新版本
      var updateInfo = await FlutterReleaseX.checkForUpdates();
      
      if (updateInfo != null && updateInfo.hasUpdate) {
        setState(() {
          releaseNotes = updateInfo.releaseNotes;
        });
        
        // 显示更新对话框或导航到下载页面
        _showUpdateDialog(updateInfo);
      }
    } catch (e) {
      print('Error checking for updates: $e');
    }
  }

  Future<void> _showUpdateDialog(UpdateInfo updateInfo) async {
    return showDialog<void>(
      context: context,
      builder: (BuildContext context) {
        return AlertDialog(
          title: Text('New Update Available'),
          content: Text(releaseNotes),
          actions: <Widget>[
            TextButton(
              onPressed: () {
                Navigator.of(context).pop();
              },
              child: Text('Later'),
            ),
            TextButton(
              onPressed: () async {
                try {
                  // 假设有一个方法来下载并安装更新
                  await FlutterReleaseX.downloadAndUpdate(updateInfo);
                } catch (e) {
                  print('Error downloading update: $e');
                }
                Navigator.of(context).pop();
              },
              child: Text('Update Now'),
            ),
          ],
        );
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Release Management'),
        ),
        body: Center(
          child: Text('Check for updates on app start.'),
        ),
      ),
    );
  }
}

// 假设的UpdateInfo类
class UpdateInfo {
  final bool hasUpdate;
  final String releaseNotes;

  UpdateInfo({required this.hasUpdate, required this.releaseNotes});
}

注意事项

  1. 实际插件API:上面的代码是基于假设的API和功能。你需要查阅flutter_release_x的实际文档来了解其提供的方法和属性。
  2. 错误处理:在生产环境中,你应该添加更多的错误处理和用户反馈。
  3. 权限:如果插件需要访问网络或存储,确保在AndroidManifest.xmlInfo.plist中添加了必要的权限。

由于flutter_release_x可能是一个特定或自定义的插件,上述代码仅为示例,具体实现需要根据插件的实际API和功能进行调整。

回到顶部