三种构建模式
- debug 热重载
- profile 性能分析
- release 发布应用
Debug模式
app可以被安装在物理设备,模拟器上进行调试
- 断点开启
- 服务扩展开启
- 针对快速开发和运行周期进行了编译优化(但不是针对执行速度、二进制文件大小或者部署)
- 调试开启,类似开发者工具等调试工具可以连接到进程里
在Web平台下调试模式意味着:
- 本次构建没有最小化资源并且整个构建没有优化性能
- 为了简化调试,这个Web应用使用了dartdevc编译器
默认情况下,运行flutter run会使用Debug模式
- 热重载只能在Debug模式下运行
- 模拟器只能在Debug模式下运行
- 在Debug模式下,性能可能会掉帧或卡顿,profile更接近真机性能
Release模式
最大的优化和最小的占用空间,不支持模拟器
- 断点不可用
- 调试信息不可见
- 调试是禁用的
- 编译针对快速启动、快速执行和小的package的大小进行了优化
- 服务扩展是禁用的
在Web平台下Relase模式意味着:
- 本次构建资源已经被压缩,并且性能得以优化
- 这个Web应用通过dart2js编译器构造,以确保更优秀的性能
flutter run --relase会使用relaset模式来进行编译
你可以使用flutter build target针对特定目标编译release模式。可以使用flutter help build查看支持的目标列表
你可以使用flutter builder --relase命令来使用release模式
Profile模式
在该模式下,一些调试能力是被保留的-足够分析你的app性能
在仿真器和模拟器上,Profile模式是不可用的,因为他们的性能不能代表真实的性能
profile模式与release类似,但有以下不同:
- 一些服务扩展是启用的。例如,支持performance overlat
- Tracing是启用的,一些调试工具,比如开发者工具可以连接到进程里
在Web平台的Profile模式意味着:
- 资源文件没有被压缩,但是整体性能已经优化
- 这个web应用通过dart2js编译器构建
flutter run --profile命令是使用Profile模式编译的