Flutter动态化 | Fair2022总结&2023规划

原创
2023/03/08 10:39
阅读数 286

前言

Fair 是58开源团队打造的Flutter 动态化框架,通过自研的Fair Compiler 工具对Dart 源文件的转化,使项目获得动态更新Widget 的能力。从2021年1月Fair 1.0开源算起,Fair 已经迭代维护了2年。从Fair 1.0仅支持UI 动态化,到Fair 2.0支持了逻辑动态化,Fair 的动态化能力日臻完善。2022年我们启动了Fair 3.0,主打Fair 生态建设,相信关注Fair 的小伙伴们也看到我们推出的热更新平台、开发提效插件等。2022年,Fair 还做了哪些工作?2023年,Fair 团队还有哪些方向呢?下面就给大家介绍下。

2022总结:生态完善

2022年Fair 团队着重投入的是Fair 生态建设相关的工作。一方面,我们设置Fair 工程优化小组,负责Fair 开源工程的迭代维护;另一方面,为了让Fair 实现从能用到好用的蜕变,我们也加大了配套工具相关的投入,包括分发管理动态化产物的热更新平台建设;提升Fair 开发效率的开发配套工具;在线上手Fair 开发的云开发平台等。

工程优化

Fair 2022全年共发布了7个版本,2个小版本,涉及Flutter 版本适配、语法糖优化、JS逻辑优化等方面。

热更新平台-FairPushy

FairPushy 是基于 Flutter + Dart 三端一体化打造的动态更新平台,主要由Web + Server + Native 3部分组成,全部使用 Flutter + Dart编写,为Flutter 动态化场景提供动态分发能力,全方位降低上手成本,提升开发体验。实现了动态化资源产物自动化打包和动态分发的能力,让开发者摆脱了技术栈的壁垒,并且系统轻量化、简单易用。

FairPushy 目前已经开源:github.com/wuba/fairpushy

云开发平台-FairOnline

Fair-Online 是面向Flutter 开发者,提供从Flutter 在线开发,到实时编译预览,打包发布、动态下发端侧更新,实现Flutter 线上动态化的一体化云开发平台。开发者无需配置Flutter 开发环境,在线开发调试代码,即时编译预览,所见即所得,结合Fair 及热更新平台 FairPushy,实现Flutter 线上动态化。

FairOnline 目前已经开源: FairOnline Github

在线体验地址: fair-online.58.com

开发配套工具

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

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

配套工具以Dart 命令行工具及AS 插件的形式提供给开发者使用。

Dart 命令行工具-FairCli 安装:

dart pub global activate faircli

AS 插件-FairTemplate 安装:

现在已上传插件市场。可从/Android Studio/Preference/Plugins 搜索 "FairTemplate" 安装。

2023规划:落地实践

通过2022年的生态建设,Fair 已基本具备了较完善的配套基建。2023年Fair 团队的核心任务是落地实践。一方面,在工程优化方向,查漏补缺,继续完善增强动态化能力。另一方面,加大对社区反馈的落地支持。

工程优化

Flutter 版本向前兼容

目前Fair 完全兼容的是Flutter 3.x版本,社区有小伙伴反馈在Flutter 2.x版本使用有问题。今年Fair 团队要解决向前兼容问题,目标是覆盖Flutter 1.x、2.x、3.x所有版本。

自动测试工具

之所以提出研发自动测试工具是因为前面提到的Flutter 版本向前兼容问题。由于Flutter 版本众多(目前已有几十个版本),Fair 的兼容性测试一直是人工测试,随着Fair test_case的增多,这部分工作量巨大。为此,Fair 团队目前已着手调研Flutter 自动化测试工具,功能完善后也会开源,感兴趣的小伙伴可以关注下~

状态管理框架支持

Fair 逻辑动态化的实现原理是基于Flutter 的StatefulWidget 架构实现。FairCompiler 会将State 中的逻辑代码转化成JS。所以Fair 目前是不支持状态管理框架的。但是熟练掌握Flutter 开发的同学在功能开发中很少不使用状态管理框架的,考虑到这方面诉求,Fair 团队已经在调研考量对状态管理框架的支持,目前方案正在讨论设计中,关注Fair 开发的小伙伴可以期待下~

除了上述介绍的,工程优化还有dart2js 完善、FairCompiler 增量编译、语法糖优化等,也欢迎外部的小伙伴跟我们一起共建,让Fair 越来越好用。

常用扩展包

关于Fair 的动态化能力支持,涉及到如下几个方面:

  • 平台相关能力,如打电话、定位、权限申请、相机等
  • 业务逻辑相关,路由、埋点等

需要提前内置逻辑,否则开发阶段需要使用这些能力时,需要发版内置,丧失了Fair 动态化能力的优势。

为了避免出现上述问题,我们希望在Fair 接入阶段,就内置常用的业务逻辑。并且我们把通用的业务逻辑以扩展包的形式提供给开发者。开发者在Fair 接入阶段,通过依赖扩展包,经过简单的配置,就可以实现常用业务逻辑的支持。目前扩展包已经在开发中,后续会提供给Fair 开发者使用。

落地支持

今年Fair 团队会更加关注落地实践。欢迎更多的小伙伴加入我们,也欢迎大家在项目中落地使用Fair。如果在落地过程中遇到任何的问题,都可以在Fair 交流群中跟我们交流,或者在Github 上给我们提Issue,我们会及时跟进。

支持我们

欢迎大家使用 Fair,也欢迎大家为我们点亮Star。

Github地址:github.com/wuba/fair

Fair官网:fair.58.com

欢迎贡献

通过Issue 提交问题,贡献代码请提交Pull Request,管理员将对代码进行审核。 对Fair感兴趣的小伙伴,可以加入交流群。

微信
wechat

微信入群:请先添加58技术小秘书为好友,备注fair,小秘书邀请进群。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部