跳到主内容

Flutter 的构建模式

介绍 Flutter 的构建模式,以及何时应该使用调试、发布或性能分析模式。

Flutter 工具在编译应用程序时支持三种模式,以及一种用于测试的 Headless 模式。你需要根据开发周期所处的阶段来选择编译模式。你是在调试代码吗?你需要性能分析信息吗?你准备好部署应用了吗?

以下是何时使用何种模式的简要总结:

本页面的其余部分将详细介绍这些模式。

调试 (Debug)

#

调试模式 (debug mode) 下,应用已针对物理设备、模拟器或仿真器上的调试进行了配置。

移动应用的调试模式意味着:

  • 断言 (Assertions) 已启用。
  • 服务扩展已启用。
  • 编译针对快速开发和运行周期进行了优化(但未针对执行速度、二进制大小或部署进行优化)。
  • 已启用调试,支持源代码级调试的工具(如 DevTools)可以连接到该进程。

Web 应用的调试模式意味着:

  • 构建内容进行压缩(minified),也执行摇树优化(tree shaking)。
  • 应用使用 dartdevc 编译器进行编译,以便于调试。

默认情况下,flutter run 会编译为调试模式。你的 IDE 支持此模式。例如,Android Studio 提供 Run > Debug... 菜单选项,以及项目页面上带有一个小三角形的绿色虫子图标。

发布 (Release)

#

在部署应用时使用 发布模式 (release mode),以获得最佳的优化效果和最小的安装包体积。对于移动端,发布模式(模拟器或仿真器不支持)意味着:

  • 断言已禁用。
  • 调试信息已被剥离。
  • 调试功能已禁用。
  • 编译针对快速启动、快速执行和小包体积进行了优化。
  • 服务扩展已禁用。

Web 应用的发布模式意味着:

  • 构建内容已压缩,且已执行摇树优化。
  • 应用使用 dart2js 编译器进行编译,以获得最佳性能。

命令 flutter run --release 可编译为发布模式。你的 IDE 支持此模式。例如,Android Studio 提供 Run > Run... 菜单选项,以及项目页面上的三角形绿色运行按钮图标。你可以使用 flutter build <target> 为特定目标编译发布模式。如需查看支持的目标列表,请使用 flutter help build

有关详细信息,请参阅发布 iOSAndroid 应用的文档。

性能分析 (Profile)

#

性能分析模式 (profile mode) 下,保留了一定的调试能力——足以分析应用的性能。性能分析模式在模拟器和仿真器上被禁用,因为它们的行为不能代表真实性能。在移动端,性能分析模式类似于发布模式,区别如下:

  • 某些服务扩展(例如启用性能分析覆盖层的扩展)已启用。
  • 已启用跟踪,支持源代码级调试的工具(如 DevTools)可以连接到该进程。

Web 应用的性能分析模式意味着:

  • 构建内容进行压缩,但已执行摇树优化。
  • 应用使用 dart2js 编译器进行编译。
  • DevTools 无法连接到处于性能分析模式下的 Flutter Web 应用。请使用 Chrome DevTools 为 Web 应用生成时间轴事件 (timeline events)

你的 IDE 支持此模式。例如,Android Studio 提供 Run > Profile... 菜单选项。命令 flutter run --profile 可编译为性能分析模式。

有关构建模式的详细信息,请参阅 Flutter 构建模式 (Flutter's build modes)