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

相关推荐
忆江南1 天前
iOS 深度解析
flutter·ios
明君879971 天前
Flutter 实现 AI 聊天页面 —— 记一次 Markdown 数学公式显示的踩坑之旅
前端·flutter
恋猫de小郭1 天前
移动端开发稳了?AI 目前还无法取代客户端开发,小红书的论文告诉你数据
前端·flutter·ai编程
MakeZero1 天前
Flutter那些事-交互式组件
flutter
shankss1 天前
pull_to_refresh_simple
flutter
shankss1 天前
Flutter 下拉刷新库新特性:智能预加载 (enableSmartPreload) 详解
flutter
SoaringHeart3 天前
Flutter调试组件:打印任意组件尺寸位置信息 NRenderBox
前端·flutter
九狼3 天前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
_squirrel3 天前
记录一次 Flutter 升级遇到的问题
flutter
Haha_bj3 天前
Flutter——状态管理 Provider 详解
flutter·app