• Flutter 的构建模式选择
    • 调试模式
    • Release 模式
    • Profile 模式

    Flutter 的构建模式选择

    Flutter 支持三种模式编译 app,也支持使用 headless 模式来测试。这篇文档解释了这三种模式,并且告诉你什么时候应该使用哪种模式。关于 headless 测试的更多信息,可以查看 单元测试。

    选择哪种编译模式取决于你处于哪个开发周期中。是调试代码阶段,还是需要性能优化分析,抑或是准备部署你的应用了呢?

    快速简要介绍下列三种构建模式:

    • 开发过程中,需要使用 热重载 功能,请选择 debug 构建模式;

    • 当你需要分析性能的时候,选择使用 profile 构建模式;

    • 发布应用的时候,需要选择使用 release 构建模式。

    下文详细解释了每种模式以及何时使用它,获得更多信息,或者了解无头模式的测试,请参考 Flutter wiki 文档。

    调试模式

    In debug mode, the app is set up for debugging on the physicaldevice, emulator, or simulator.

    Debug 模式下,app 可以被安装在物理设备、仿真器或者模拟器上进行调试。Debug 模式意味着:

    • 断点 是开启的。

    • 服务扩展是开启的。

    • 针对快速开发和运行周期进行了编译优化(但不是针对执行速度、二进制文件大小或者部署)。

    • 调试开启,类似 开发者工具 等调试工具可以连接到进程里。

    在 Web 平台下的调试模式意味着:

    • 本次构建 没有 最小化资源并且整个构建 没有 优化性能。

    • 为了简化调试,这个 Web 应用使用了 dartdevc 编译器。

    默认情况下,运行 flutter run 会使用 Debug 模式。你的 IDE 也支持这些模式。例如,Android Studio 提供了 Run > Debug… 菜单选项,而且在项目面板中还有一个三角形的绿色运行按钮图标(菜单选项中会显示相应图标的图片)。

    备忘

    • 热重载功能仅能在调试模式下运行;

    • 仿真器和模拟器仅能在调试模式下运行;

    • 在调试模型下,应用的性能可能会掉帧或者卡顿,profile 模式下会更接近真机性能。

    Release 模式

    当你想要最大的优化以及最小的占用空间时,就使用 Release 模式来部署 app 吧。release 模式是不支持模拟器或者仿真器的,使用 Release 模式意味着:

    • 断点是不可用的。

    • 调试信息是不可见的。

    • 调试是禁用的。

    • 编译针对快速启动、快速执行和小的 package 的大小进行了优化。

    • 服务扩展是禁用的。

    在 Web 平台的 Release 模式意味着:

    • 这次构建资源已经被压缩,并且性能得以优化。

    • 这个 Web 应用通过 dart2js 编译器构建,以确保更优秀的性能。

    flutter run —release 命令会使用 Release 模式来进行编译。你的 IDE 同样也支持这个模式。例如,Android Studio 提供了 Run > Run… 菜单选项,而且在项目面板中还有一个被小三角覆盖的绿色虫子图标。(菜单选项中会显示相应图标的图片)

    你可以使用 flutter build <target> 针对特定目标编译 release 模式。请使用 flutter help build 查看支持的目标列表。

    你也可以通过 flutter build —release 命令来使用 release 模式。

    你也可以运行 flutter build 命令使用 Release 模式来编译。更多详细信息,可以参阅发布 iOS 和 Android app 的文档。

    Profile 模式

    profile 模式下,一些调试能力是被保留的—足够分析你的 app 性能。在仿真器和模拟器上,Profile 模式是不可用的,因为他们的行为不能代表真实的性能。profile 模式和 release 类似,但有以下不同:

    • 一些服务扩展是启用的。例如,支持 performance overlay。

    • Tracing 是启用的,一些调试工具,比如 开发者工具 可以连接到进程里。

    在 Web 平台的 Profile 模式意味着:

    • 资源文件没有被压缩,但是整体性能已经优化

    • 这个 Web 应用通过 dart2js 编译器构建

    flutter run —profile 命令是使用 Profile 模式来编译的。你的 IDE 也是支持这个模式的。例如,Android Studio 提供了 Run > Profile… 菜单选项。

    备忘

    可以使用 开发者工具 来测试应用性能。

    关于这些模式的更多信息,可以查看 Flutter wiki 中的 Flutter’s build modes 文档。