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

相关推荐
恋猫de小郭19 小时前
Android CLI ,谷歌为 Android 开发者专研的 AI Agent,提速三倍
android·前端·flutter
火柴就是我20 小时前
flutter pushAndRemoveUntil 的一次小疑惑
flutter
于慨20 小时前
flutter doctor问题解决
flutter
唔6621 小时前
flutter 图片加载类 图片的安全使用
安全·flutter
Nathan202406161 天前
Flutter - InheritedWidget
flutter·dart
恋猫de小郭1 天前
JetBrains Amper 0.10 ,期待它未来替代 Gradle
android·前端·flutter
Lanren的编程日记1 天前
Flutter鸿蒙应用开发:实时聊天功能集成实战
flutter·华为·harmonyos
Utopia^1 天前
鸿蒙flutter第三方库适配 - 联系人备份工具
flutter·华为·harmonyos
念格2 天前
Flutter 仿微信输入框最佳实践:自适应高度 + 超行数智能切换全屏
前端·flutter
程序员老刘2 天前
《Flutter跨平台开发核心技巧与应用》新书来了
flutter·ai编程·客户端