Flutter动态化解决方案实战教程

发表时间: 2024-05-09 16:19

//xia仔のke:quangneng.com/5075/

前言

Flutter 是 Google 开源的跨平台 UI 框架,其凭借“多端一致”和“渲染性能”上的优势成为越来越多开发者的首选。但随着使用规模加大,为了解决诸多快速迭代的业务产品线及需求,动态化成为了当下亟需解决的问题

Fair是58自研的的动态化框架,通过Fair Compiler工具对原生Dart源文件的自动转化,使项目获得动态更新Widget Tree和State的能力。

近期我们在吸取了开源社区的反馈与建议后,针对开发体验完善了Fair的配套工具建设,下面进入正题

项目背景

当前Fair在使用上有着一定的门槛,新接触的小伙伴一般是阅读使用指南来上手Fair,大致需要经过下面的几个步骤

  1. 创建工程,配置依赖
  2. 编写Fair代码,手动编译动态化产物
  3. 将编译产物手动拷出,通过文件或者网络的方式加载
  4. 安装预览效果

如果需要更新动态化产物重新预览效果的话,就要重复234步骤,这样对于上手的过程是极不方便的,我们在开源社区收到的反馈中也有很大一部分是有关基础使用。

研发Fair配套工具链是为了辅助开发者快速上手 Fair开发,提升Fair开发效率,规避Fair不支持的Flutter语法,主要包含三个部分:

  • 工程创建:快速搭建Fair载体工程及动态化工程
  • 模板代码:提供页面及组件模板
  • 本地热更新:线下开发使用,实现开发阶段快速预览Fair动态化功能

我们以dart命令行工具及AS插件的形式提供给开发者使用。

流程图

对于Flutter动态化解决方案的实战流程,可以简单地描述如下:

  1. 需求分析和设计:
  2. 确定需要动态化的功能和模块。
  3. 设计动态化方案的架构和实现方式。
  4. 集成动态化框架:
  5. 选择合适的Flutter动态化框架,如Flutter Booster、Flutter Dyna等。
  6. 集成框架到Flutter项目中。
  7. 热更新服务器搭建:
  8. 搭建热更新服务器,用于存储和管理动态化资源。
  9. 配置服务器的环境和权限设置。
  10. 动态资源管理:
  11. 将需要动态化的资源上传到热更新服务器。
  12. 实现客户端的资源下载和更新逻辑。
  13. 动态化模块设计:
  14. 划分动态化模块的边界和功能。
  15. 设计动态模块的加载和卸载机制。
  16. 动态化功能实现:
  17. 开发动态化模块的业务逻辑和界面展示。
  18. 实现动态模块的加载和运行逻辑。
  19. 版本控制和更新策略:
  20. 设计版本控制和更新策略,确保动态资源的版本一致性和安全性。
  21. 实现版本检查和更新提示功能。
  22. 性能优化和稳定性测试:
  23. 进行性能优化,减少动态资源的加载时间和内存占用。
  24. 进行稳定性测试,确保动态化功能的稳定性和可靠性。
  25. 发布和部署:
  26. 发布动态化功能到线上环境。
  27. 配置客户端的自动更新机制,确保用户能够及时获取到最新版本的动态资源。
  28. 监控和反馈:
  29. 实时监控动态化功能的使用情况和性能指标。
  30. 收集用户反馈和意见,及时优化和改进动态化方案。

工具选择

在选择Flutter动态化解决方案时,您可以考虑以下一些工具和框架:

  1. Flutter Booster:
  2. Flutter Booster 是一款由阿里巴巴开发的Flutter性能优化和动态化框架。它提供了诸如页面预加载、按需加载、热更新等功能,可以帮助提升应用的性能和灵活性。
  3. Flutter Dyna:
  4. Flutter Dyna 是一款开源的Flutter动态化框架,提供了动态加载Flutter页面、资源和插件等功能。它支持通过热更新方式更新应用的部分代码和资源,可以用于实现模块化开发和动态更新。
  5. Flutter Hot Reload:
  6. Flutter 自带的热重载功能也可以用于实现部分动态化。通过热重载,您可以在应用运行时快速更新和调试代码,提高开发效率。虽然它主要用于开发阶段的调试,但在某些场景下也可以用于动态化更新。
  7. Appcenter:
  8. Microsoft 的 Appcenter 提供了一套用于移动应用构建、测试、分发和监控的工具。它包含了热更新服务,可以用于Flutter应用的动态化更新。
  9. CodePush:
  10. CodePush 是微软的一项移动应用动态更新服务,可以用于Flutter应用的热更新。它提供了简单的API和命令行工具,方便集成和管理动态化更新。
  11. Cachet:
  12. Cachet 是一款用于Flutter应用的动态化解决方案,提供了动态加载页面和资源的功能。它支持通过服务器端配置实现页面的动态化更新,适用于一些特定的场景和需求。
  13. 其他自定义解决方案:
  14. 如果以上工具都不符合您的需求,您还可以考虑自行开发或集成其他自定义的动态化解决方案。根据您的项目需求和技术能力,您可以选择合适的技术栈和开发方式来实现动态化功能。

选择工具时,您可以根据项目的需求、团队的技术栈和经验、开发周期和预算等因素进行权衡和选择。同时,确保所选工具具有良好的社区支持和稳定的性能,以保证项目的顺利进行和后续的维护。