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

  1. Flutter SDK ≥ 3.19(稳定版)
  2. Visual Studio 2022 "使用 C++ 的桌面开发" 工作负载
  3. PowerShell 管理员权限运行一次:
bash 复制代码
flutter doctor --windows

出现 ✓ Visual Studio 即可。

2.2 开启 Windows 支持

bash 复制代码
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 分发注意

  1. 不要只拷 .exe
    同级 *.dlldata/ 必须一起打包,zip 发给用户。

  2. 改图标/版本 → 编辑 windows/runner/Runner.rc

    复制代码
    IDI_APP_ICON ICON "resources\\my_icon.ico"
  3. 需要管理员权限 → 在 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

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 一键编译

bash 复制代码
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. 最佳实践小结

  1. 先选场景再选路线 → 有 UI 直接 Flutter,无 UI 直接 dart compile exe

  2. Flutter 发布切记整包压缩 ;CI 里加一步 zip -r windows.zip build/windows/x64/release/runner/*

  3. CLI 工具发布到 GitHub Releases 时,同时提供 data_processor.exedata_processor-macos 等多平台单文件,体验极佳。

  4. 规则纳入版本控制
    .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 并分享。

相关推荐
ujainu16 小时前
Flutter + OpenHarmony 游戏开发进阶:用户输入响应——GestureDetector 实现点击发射
flutter·游戏·openharmony
hudawei99616 小时前
TweenAnimationBuilder和AnimatedBuilder两种动画的比较
flutter·ui·动画·tweenanimation·animatedbuilder
ujainu16 小时前
Flutter + OpenHarmony 实现无限跑酷游戏开发实战—— 对象池化、性能优化与流畅控制
flutter·游戏·性能优化·openharmony·endless runner
ZH154558913117 小时前
Flutter for OpenHarmony Python学习助手实战:自动化脚本开发的实现
python·学习·flutter
晚烛18 小时前
CANN + 物理信息神经网络(PINNs):求解偏微分方程的新范式
javascript·人工智能·flutter·html·零售
一起养小猫19 小时前
Flutter for OpenHarmony 实战:扫雷游戏完整开发指南
flutter·harmonyos
晚烛19 小时前
CANN 赋能智慧医疗:构建合规、高效、可靠的医学影像 AI 推理系统
人工智能·flutter·零售
晚霞的不甘19 小时前
揭秘 CANN 内存管理:如何让大模型在小设备上“轻装上阵”?
前端·数据库·经验分享·flutter·3d
小哥Mark21 小时前
Flutter开发鸿蒙年味 + 实用实战应用|绿色烟花:电子烟花 + 手持烟花
flutter·华为·harmonyos
一只大侠的侠1 天前
Flutter开源鸿蒙跨平台训练营 Day 3
flutter·开源·harmonyos