Flutter发布管理插件flutter_release_x的使用
Flutter发布管理插件flutter_release_x的使用
Flutter Release X
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 。 |
示例
-
构建发布APK,上传到云,并生成二维码和下载链接:
frx build
-
验证配置:
frx build -s
-
指定自定义配置文件路径:
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
设置步骤
-
配置
config.yaml
创建一个config.yaml
文件,包含上述设置。如果您有自定义文件路径,可以使用-c
标志指定。 -
生成云凭证 对于云上传(GitHub 或 Google Drive),请按照以下步骤操作:
-
GitHub 配置 在 GitHub 中生成个人访问令牌(PAT)并将其添加到
config.yaml
中。 -
Google Drive 配置 创建一个 Google Cloud 项目并启用 Google Drive API。生成 OAuth 2.0 凭据并将
client_id
和client_secret
添加到config.yaml
中。
-
-
运行工具 完成配置后,运行以下命令:
frx build
此命令将构建您的 Flutter 项目,上传它,并生成二维码和共享链接。
云集成
生成 GitHub 个人访问令牌
要使您的 Flutter CLI 工具能够在 GitHub 上上传和删除发布,请生成一个具有适当权限的 Personal Access Token (PAT)。请按照以下步骤创建和配置您的令牌。
生成 GitHub 令牌的步骤
-
打开 GitHub 令牌生成页面: Generate GitHub Token。
-
设置令牌名称: 在 Note 字段中输入描述性的名称,例如
Flutter Release X Token
。 -
选择范围: 在 Select scopes 下检查以下权限:
repo
(对私有仓库的完全控制)- 包括对公共和私有仓库的访问权限,这是上传和删除发布的必要条件。
-
生成令牌: 点击页面底部的 Generate token 按钮。 立即复制令牌,因为您将无法再次查看它。
-
设置项目:
github: enabled: true token: YOUR_GITHUB_TOKEN
Google Drive 配置
要将文件上传到 Google Drive,请按照以下步骤设置凭据:
-
创建 Google Cloud 项目: 进入 Google Cloud Console。 创建一个新项目或选择现有项目。
-
启用 Drive API: 在 Google Cloud Console 中,导航到 APIs & Services > Library。 搜索 “Google Drive API” 并启用它。
-
创建 OAuth 2.0 凭据: 进入 APIs & Services > Credentials。 点击 Create Credentials 并选择 OAuth Client ID。 如果提示配置同意屏幕,请进行配置。 将应用类型设置为 Desktop App。 记下生成的 Client ID 和 Client Secret。
-
设置项目:
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_TOKEN
、CHANNEL_ID
和 member_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 开发更快、更轻松、更有趣吧!🎉
支持该包(可选)
如果您觉得这个包有用,可以通过点赞来免费支持它。您还可以通过以下方式支持该包:
更多关于Flutter发布管理插件flutter_release_x的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于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});
}
注意事项
- 实际插件API:上面的代码是基于假设的API和功能。你需要查阅
flutter_release_x
的实际文档来了解其提供的方法和属性。 - 错误处理:在生产环境中,你应该添加更多的错误处理和用户反馈。
- 权限:如果插件需要访问网络或存储,确保在
AndroidManifest.xml
和Info.plist
中添加了必要的权限。
由于flutter_release_x
可能是一个特定或自定义的插件,上述代码仅为示例,具体实现需要根据插件的实际API和功能进行调整。