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

相关推荐
iOS_MingXing2 小时前
flutter TabBar 设置isScrollable 第一个有间距
flutter
小红星闪啊闪21 小时前
Flutter开发 -- 需要了解的Dart知识
flutter
小李A_Z1 天前
[Flutter]介绍些flutter的弹窗
flutter
小李A_Z1 天前
[Flutter]介绍写Flutetr的按钮
flutter
恋猫de小郭1 天前
Flutter 官方 LLM 动态 UI 库 flutter_genui 发布,让 App UI 自己生成 UI
android·前端·flutter
tangweiguo030519871 天前
FlutterActivity vs FlutterFragmentActivity:全面对比与最佳实践
android·flutter
ITKEY_1 天前
flutter日期选择国际化支持
开发语言·javascript·flutter
农夫三拳_有点甜1 天前
Flutter SystemChrome 完整指南
flutter
葱段1 天前
【Flutter】TextField 监听长按菜单粘贴点击事件
android·flutter·dart