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

以下是何时使用哪种模式的快速摘要:

  • 在开发期间使用调试模式,尤其当您需要使用热重载时。
  • 当您想分析性能时,请使用性能分析模式。
  • 当您准备发布应用时,请使用发布模式。

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

调试

#

调试模式下,应用已设置为可在物理设备、模拟器或仿真器上进行调试。

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

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

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

  • 构建进行最小化处理,也执行摇树优化。
  • 应用使用dartdevc编译器编译,以便于调试。

默认情况下,flutter run 会编译到调试模式。您的 IDE 支持此模式。例如,Android Studio 提供了运行 > 调试... 菜单选项,以及项目页面上带有小三角形覆盖的绿色错误图标。

发布

#

在部署应用时使用发布模式,此时您需要最大限度的优化和最小的占用空间。对于移动端,发布模式(模拟器或仿真器不支持)意味着:

  • 断言已禁用。
  • 调试信息已被移除。
  • 调试已禁用。
  • 编译针对快速启动、快速执行和较小的包大小进行了优化。
  • 服务扩展已禁用。

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

  • 构建已进行最小化处理并已执行摇树优化。
  • 应用使用dart2js编译器编译,以获得最佳性能。

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

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

性能分析

#

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

  • 某些服务扩展(例如启用性能叠加层的功能)已启用。
  • 跟踪已启用,并且支持源级别调试的工具(例如DevTools)可以连接到进程。

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

  • 构建进行最小化处理,但已执行摇树优化。
  • 应用使用dart2js编译器编译。
  • DevTools 无法连接到在性能分析模式下运行的 Flutter Web 应用。请使用 Chrome DevTools 为 Web 应用生成时间线事件

您的 IDE 支持此模式。例如,Android Studio 提供了运行 > 性能分析... 菜单选项。命令flutter run --profile会编译到性能分析模式。

有关构建模式的更多信息,请参阅Flutter 的构建模式