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