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 并分享。

相关推荐
默默_david2 小时前
14.5 绘制(一)绘制原理及Layer——问答
flutter
LinXunFeng17 小时前
Flutter 拖拉对比组件,换装图片前后对比必备
前端·flutter·开源
2501_9197490317 小时前
配置flutter鸿蒙的环境和创建并运行第一个flutter鸿蒙项目【精心制作】
flutter·华为·harmonyos
YUFENGSHI.LJ18 小时前
Flutter 如何使用fvm进行多项目sdk管理
flutter
开心-开心急了20 小时前
关于Flutter与Qt for python 的一些技术、开源、商用等问题
开发语言·python·qt·flutter
猫林老师1 天前
Flutter for HarmonyOS开发指南(四):国际化与本地化深度实践
flutter·华为·harmonyos
猫林老师1 天前
Flutter for HarmonyOS 开发指南(一):环境搭建与项目创建
flutter·华为·harmonyos
sunly_2 天前
Flutter:视频预览功能
javascript·flutter·音视频
勤劳打代码2 天前
条分缕析 —— 通过 Demo 深入浅出 Provider 原理
flutter·面试·dart
2501_915918412 天前
Flutter 加固方案对比与实战,多工具组合的跨平台安全体系(Flutter App 加固/IPA 成品混淆/Ipa Guard CLI/自动化安全流程)
安全·flutter·ios·小程序·uni-app·自动化·iphone