Skip to main content

Flutter 的构建模式

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

何时使用哪种模式的快速总结如下:

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

页面其余部分详细介绍了这些模式。

调试

#

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

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

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

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

  • 构建 进行压缩,并且 执行树状摇动。
  • 应用使用dartdevc 编译器进行编译,以便于调试。

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

发布

#

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

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

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 的构建模式