Flutter的四种运行模式
一、 Debug(调试)模式
-
这是开发Flutter应用程序时最常用的模式。可以在真机和模拟器上同时运行。重要用于开发和调试阶段。
-
可以进行热重载,即在不重新启动应用程序的情况下实时更新代码。
-
应用程序会包含用于调试和开发的额外信息和工具(debugging信息、debugger aids(比如observatory)和服务扩展),例如错误提示、日志记录和断言。
-
运行速度较慢,但它提供了最佳的开发体验和易用性。
-
优化了快速develop/run循环,但是没有优化执行速度、二进制大小和部署。命令flutter run就是以这种模式运行的,通过sky/tools/gn --android或者sky/tools/gn --ios来build。有时候也被叫做“checked模式”或者“slow模式”。
二、 Release(发布)模式
1、 Release模式用于构建发布版本的应用程序,以便在最终用户设备上运行。它通常用于应用程序的正式发布和发布到应用商店。
2、 应用程序被优化以提供最佳的性能和资源利用。它会删除调试信息,减小应用程序的大小,并进行代码优化。
3、 Release模式下的应用程序通常比Debug模式下的应用程序运行得更快。
4、 Release模式只能在真机上运行,不能在模拟器上运行:会关闭所有断言和debugging信息,关闭所有debugger工具。
5、 优化了快速启动、快速执行和减小包体积。禁用所有的debugging aids(调试工具和服务扩展。这个模式是为了部署给最终的用户使用。命令flutter run --release就是以这种模式运行的,通过sky/tools/gn --android --runtime-mode=release或者sky/tools/gn --ios --runtime-mode=release来build。
三、 Profile(性能分析)模式
1、 Profile模式用于性能分析和优化应用程序阶段。它提供了比Debug模式更多的性能相关信息,但没有像Debug模式那样的完整调试支持。不支持热重载
2、 应用程序会收集性能数据,如内存使用情况、CPU占用率和渲染性能等。这些数据可以用于发现性能瓶颈并进行优化。
3、 Profile模式下的应用程序运行速度通常比Debug模式稍慢,但仍比Release模式快。
4、 Profile模式只能在真机上运行,不能在模拟器上运行:基本和Release模式一致,除了启用了服务扩展和tracing,以及一些为了最低限度支持tracing运行的东西(比如可以连接observatory到进程)。
5、 命令flutter run --profile就是以这种模式运行的,通过sky/tools/gn --android --runtime-mode=profile或者sky/tools/gn --ios --runtime-mode=profile```来build。因为模拟器不能代表真实场景,所以不能在模拟器上运行。
四、 test(测试)模式
-
Test模式用于运行自动化测试和单元测试。它提供了特定的工具和环境,以便于测试代码的执行和断言结果的验证。
-
测试框架可以与应用程序交互,模拟用户操作并验证预期结果。
-
测试模式通常用于持续集成和构建过程中的自动化测试。
五、 Observatory:
“Observatory” 是 Dart 和 Flutter 提供的一种强大的工具,用于在运行中的应用程序中监视、调试和分析应用程序的性能和行为。它提供了一组功能丰富的工具和界面,帮助开发者诊断和解决应用程序中的问题。
Observatory 提供以下主要功能:
-
内存分析:Observatory 可以帮助开发者监视应用程序的内存使用情况,包括对象分配和回收、内存泄漏等。这对于优化内存使用和解决内存泄漏问题非常有用。
-
CPU 分析:Observatory 提供了 CPU 分析工具,帮助开发者识别应用程序中的 CPU 瓶颈和性能问题。它可以显示每个函数的 CPU 使用情况,帮助定位耗时操作和优化热点代码。
-
异步堆栈跟踪:Observatory 具有强大的异步堆栈跟踪功能,可以帮助开发者追踪异步操作的执行路径和调用关系。这对于理解异步代码的行为和解决异步问题非常有帮助。
-
代码热重载:Observatory 具有热重载功能,可以在不重新启动应用程序的情况下实时更新代码。这使得开发者可以快速调试和修改应用程序的代码,提高开发效率。
-
性能监视:Observatory 提供了实时的性能监视工具,可以监视应用程序的帧率、渲染性能和 UI 响应时间。这对于优化应用程序的性能和响应性非常有用。
-
要使用 Observatory,可以在运行中的 Flutter 应用程序上启用它。在开发模式下,可以通过运行
flutter run --observatory-port=
命令启动应用程序,并在浏览器中访问相应的调试 URL。然后,可以使用 Observatory 提供的界面和工具来监视和分析应用程序。
请注意,Observatory 在 Release 模式下是不可用的,因为它会暴露应用程序的敏感信息。它主要用于开发和调试阶段,以帮助开发者改进和优化 Flutter 应用程序。
六、 Debug模式与Profile模式的区别在哪里
-
功能和工具:Debug模式是用于开发和调试应用程序的模式。它提供了热重载(Hot Reload)、布局边界显示(Layout Boundaries)、控制台日志输出(Console Logging)以及断点调试(Debugging with Breakpoints)等功能和工具,方便开发者进行快速迭代和调试。而Profile模式则是用于性能分析和优化的模式。它提供了一些性能分析工具和优化策略,可以帮助开发者定位和解决性能问题。
-
性能和优化:Debug模式下,Flutter会执行一些额外的检查和优化,以提供更好的开发体验。这包括更详细的错误信息、更快的热重载速度以及更好的运行时性能。但相应地,Debug模式的应用程序可能会运行得稍慢一些,因为包含了调试信息和工具。而Profile模式下,Flutter会执行更多的性能优化,以提高应用程序的性能和效率。这包括禁用调试信息、启用代码优化和移除不必要的开发工具和库。因此,在Profile模式下构建的应用程序通常更小、更快,并且具有更高的运行时性能。
-
构建和部署:Debug模式下构建的应用程序通常用于开发、测试和调试阶段。你可以使用
flutter run
命令以Debug模式运行应用程序,并在开发过程中使用相关工具进行调试。而Profile模式下构建的应用程序则通常用于性能分析和发布准备阶段。你可以使用flutter run --profile
命令以Profile模式运行应用程序,执行性能分析并优化应用程序的性能。在最终发布应用程序之前,通常会使用Release模式进行构建和部署,以获得最佳的性能和体验。 -
需要注意的是,Debug模式和Profile模式都是为了不同的目的而设计的。在开发过程中,通常会使用Debug模式进行快速迭代和调试,而在性能分析和优化阶段,可以切换到Profile模式进行性能分析和优化。最终,为了发布应用程序,会使用Release模式进行构建和部署,以获得最佳的性能和效果。
最后
如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。
如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。
相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。
欢迎大家一键三连支持,若需要文中资料,直接扫描文末CSDN官方认证微信卡片免费领取↓↓↓
PS:群里还设有ChatGPT机器人,可以解答大家在工作上或者是技术上的问题