Dart → `.exe`:Flutter 桌面与纯命令行双轨编译完全指南
Dart → .exe
:Flutter 桌面与纯命令行双轨编译完全指南
关键词:Dart、Flutter、Windows、可执行文件、桌面端、CLI、交叉编译
1. 前言
很多开发者以为 Dart 只能跑在 AOT 移动端或 Web 端,其实 官方工具链早已支持一键输出 Windows 原生 .exe
。
根据有无 UI,可分为两条路线:
路线 | 产物 | 典型场景 | 本文定位 |
---|---|---|---|
Flutter 桌面 | 带 UI 的 .exe | 本地工具、管理后台 | 步骤 + 踩坑 |
纯 Dart CLI | 单文件 .exe | 数据处理、自动化脚本 | 进阶优化 |
2. 路线 A:Flutter 桌面应用 → .exe
2.1 环境 checklist
- Flutter SDK ≥ 3.19(稳定版)
- Visual Studio 2022 “使用 C++ 的桌面开发” 工作负载
- PowerShell 管理员权限运行一次:
flutter doctor --windows
出现 ✓ Visual Studio
即可。
2.2 开启 Windows 支持
flutter config --enable-windows-desktop
执行后项目根目录自动生成 windows/
文件夹。
2.3 编译命令
模式 | 命令 | 产物路径 | 特点 |
---|---|---|---|
调试 | flutter build windows --debug | build/windows/x64/debug/runner/Runner.exe | 含符号、几十 MB、可断点 |
发布 | flutter build windows --release | build/windows/x64/release/runner/Runner.exe | 优化体积、无符号、可分发 |
2.4 分发注意
- 不要只拷
.exe
!
同级*.dll
、data/
必须一起打包,zip 发给用户。 - 改图标/版本 → 编辑
windows/runner/Runner.rc
:IDI_APP_ICON ICON "resources\\my_icon.ico"
- 需要管理员权限 → 在
Runner.rc
把requestedExecutionLevel level="requireAdministrator"
3. 路线 B:纯 Dart CLI → 单文件 .exe
3.1 环境
仅安装 Dart SDK 即可(无需 Flutter)。
https://dart.dev/get-dart
3.2 示例脚本
bin/data_processor.dart
import 'dart:io';void main(List<String> args) {if (args.isEmpty) {stderr.writeln('用法: data_processor.exe <file>');exitCode = 1;return;}final file = File(args.first);print('行数: ${file.readAsLinesSync().length}');
}
3.3 一键编译
dart compile exe bin/data_processor.dart -o bin/data_processor.exe
产物:单文件 bin/data_processor.exe
(5-10 MB),双击或命令行均可执行。
3.4 体积优化 & 交叉编译
需求 | 命令 |
---|---|
再小一点 | dart compile exe --no-snapshot |
Linux → Windows | dart compile exe --target-os windows (需 mingw-w64) |
4. 两种路线对比速览
维度 | Flutter 桌面 .exe | 纯 Dart CLI .exe |
---|---|---|
依赖 | 多 DLL 必须同目录 | 单文件,0 依赖 |
体积 | 10-50 MB(含 UI 引擎) | 5-15 MB(仅运行时) |
入口 | main() + Widget | main() + 命令行参数 |
编译依赖 | Flutter + VS 构建工具 | 仅 Dart SDK |
典型场景 | 图形化工具、本地后台 | 脚本、批量处理、安装器 |
5. 最佳实践小结
- 先选场景再选路线 → 有 UI 直接 Flutter,无 UI 直接
dart compile exe
。 - Flutter 发布切记整包压缩;CI 里加一步
zip -r windows.zip build/windows/x64/release/runner/*
。 - CLI 工具发布到 GitHub Releases 时,同时提供
data_processor.exe
与data_processor-macos
等多平台单文件,体验极佳。 - 规则纳入版本控制:
.cursorrules
里加一条:- 所有 Dart CLI 必须提供 `dart compile exe` 产物 - Flutter 桌面禁止单独上传 Runner.exe
6. 一键模板仓库
GitHub 模板已备好:
https://github.com/yourname/dart-to-exe-template
含 Flutter 桌面 + CLI 双示例,Actions 自动 Release,拿去即用。
🎉 现在就把你的 Dart 代码编译成 .exe
发给你的 Windows 小伙伴吧!如果本文帮到你,欢迎点个 Star 并分享。