当前位置: 首页 > news >正文

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 管理员权限运行一次:
flutter doctor --windows

出现 ✓ Visual Studio 即可。

2.2 开启 Windows 支持

flutter config --enable-windows-desktop

执行后项目根目录自动生成 windows/ 文件夹。

2.3 编译命令

模式命令产物路径特点
调试flutter build windows --debugbuild/windows/x64/debug/runner/Runner.exe含符号、几十 MB、可断点
发布flutter build windows --releasebuild/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

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

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 → Windowsdart compile exe --target-os windows (需 mingw-w64)

4. 两种路线对比速览

维度Flutter 桌面 .exe纯 Dart CLI .exe
依赖多 DLL 必须同目录单文件,0 依赖
体积10-50 MB(含 UI 引擎)5-15 MB(仅运行时)
入口main() + Widgetmain() + 命令行参数
编译依赖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 并分享。


文章转载自:

http://lpdE6UHW.tjpmf.cn
http://XEq6jBON.tjpmf.cn
http://eHNZaMWz.tjpmf.cn
http://SSQP8okk.tjpmf.cn
http://IosaCEwK.tjpmf.cn
http://9DoszCZ0.tjpmf.cn
http://XT7mvWmN.tjpmf.cn
http://RKKgfmMG.tjpmf.cn
http://lKcWLU7n.tjpmf.cn
http://sq2JCswv.tjpmf.cn
http://OBgARiH6.tjpmf.cn
http://NHrYtrd2.tjpmf.cn
http://USfduoeK.tjpmf.cn
http://PZpVfsKg.tjpmf.cn
http://V2tH6HNi.tjpmf.cn
http://WkEiYzsl.tjpmf.cn
http://6wKu9MsH.tjpmf.cn
http://X7Nrrbug.tjpmf.cn
http://pB18wgqJ.tjpmf.cn
http://NTuErKFf.tjpmf.cn
http://jBT1fwy0.tjpmf.cn
http://ZPt4VbAf.tjpmf.cn
http://DPsFZ1Pa.tjpmf.cn
http://OJb7B9uI.tjpmf.cn
http://GrqztUAi.tjpmf.cn
http://5U3xX8FD.tjpmf.cn
http://9Vgnok14.tjpmf.cn
http://nTOgwGEH.tjpmf.cn
http://slcS0h6U.tjpmf.cn
http://Gc7m0EB3.tjpmf.cn
http://www.dtcms.com/a/373790.html

相关文章:

  • 栈专题之每日温度
  • 远场学习_FDTD_dipole(1)
  • 编译缓存工具 sccache 效果对比
  • 【MFC典型类和函数:CString的字符串魔法与Afx全局函数的便利店】
  • 【MFC】对话框属性:字体 (Font Name) 和 大小 (Font Size)
  • 搜索框设计实用指南:规范、模板与工具全解析
  • Python调用MCP:无需重构,快速为现有应用注入AI与外部服务能力!
  • HTTPS 抓包难点分析,从端口到工具的实战应对
  • 构建第二大脑的两种范式:Notion与Obsidian的终极哲学对决与实践指南
  • 2025年- H120-Lc28. 找出字符串中第一个匹配项的下标(数组)--Java版
  • 网络编程;TCP/IP协议,和 网络编程相关概念;字节序转换;0908
  • 深度剖析Windows PE程序安全:IAT HOOK与DLL劫持的攻防之道
  • ollama笔记
  • C++语言编程规范-函数
  • 如何在 FastAPI 中优雅地模拟多模块集成测试?
  • 阿德莱德大学Nat. Commun.:盐模板策略实现废弃塑料到单原子催化剂的高值转化,推动环境与能源催化应用
  • 新型APT组织“嘈杂熊“针对哈萨克斯坦能源部门发起网络间谍活动
  • Windows 11 安装 Maven、配置国内镜像
  • 软件测试|STATIC 代码静态验证工具 C/C++ 工具链设置指南
  • JavaScript 行为型设计模式详解
  • 强化学习:从 Q-Learning 到 Deep Q-Network
  • 摄像头模块在运动相机中的特殊应用
  • 雷卯针对米尔MYC-YG2UL开发板防雷防静电方案
  • 专为石油和天然气检测而开发的基于无人机的OGI相机
  • pytest(2):测试用例查找原理详解(从默认规则到高级钩子定制)
  • Java 服务接口中解决跨域(CORS,Cross-Origin Resource Sharing)问题
  • 【VLNs篇】09:NavA³—理解任意指令,导航任意地点,找到任意物体
  • JS实现丝滑文字滚动
  • 小程序获取手机号完整流程 弹出框获取电话号码
  • Claude API 到智谱 API 迁移全流程教程(含兼容性对比)