1、Flutter在字节跳动的现状与程实践Flutter在字节跳动的现状的优势与业务现状录Flutter建设进展与规划简介程实践Flutterw研发套件容器化程案ByteRedux状态管理案总结与展望Flutter在字节跳动的现状的优势与业务现状录Flutter建设进展与规划简介程实践Flutterw研发套件容器化程案ByteRedux状态管理案总结与展望为什么选择Flutter?性能体验开发效率度致性可控制性业务落地正在使Flutter的业务20+今头条视频虾Helo更多Flutter在字节跳动的现状的优势与业务现状录Flutter建设进展与规划简介程实践Flutterw研发套件容器化程案Byt
2、eRedux状态管理案总结与展望建设标建设规划(3+1)应框架周边建设技术体系基础服务研发基础组件程架构程效率FlutterwMonitor Applog容器化 状态管理混合程 版本致知识库组件平台最佳实践 AccountCIFA Q质量培训课程引擎框架FST压测性能优化Crash治理 多端体化Multi-Window 端内存复构建具优化Benchmark技术联盟渲染内存线上交流群监控体系启动速度 包体积信息同步群灰度/降级Flutter在字节跳动的现状的优势与业务现状录Flutter建设进展与规划简介程实践Flutterw研发套件容器化程案ByteRedux状态管理案总结与展望Flutter
3、w背景AndroidiOSWebIDE配置复杂、环境差异化链路案实施困难Flutterw研发套件程接配置表沙盒隔离产物发布Environment Engineering引擎致问题跟进平台能SupportPlaygroundDryrun案实施Flutterw研发套件程接配置表1. 标准沙盒隔离产物发布2.Environment Engineering引擎致问题跟进平台能SupportPlaygroundDryrun案实施Flutterw标准化程环境程flutterw.properties程 + 本地环境SDK版本信息项属性Flutterw依赖具 程(内置配置)代码/资源Flutterw动化程能动
4、更新部署案使案解决问题反馈问题Flutterw携带信息Flutterw结标准化程环境,保证项成员环境致,问题可回溯。动化程案能,协助排查问题、解决问题,实施案。提供低成本体验Flutter能,降低Flutter的推难度。配合研发流程打包发布Flutter产物。Flutter在字节跳动的现状的优势与业务现状录Flutter建设进展与规划简介程实践Flutterw研发套件容器化程案ByteRedux状态管理案总结与展望容器化背景容器化背景调容器化API实现宿主容器化多端、多业务交叉部署业务AFlutter保证了运环境渲染能统容器化API保证了运环境基础能统业务BWrite Once,Run Eve
5、rywhere容器化业务隔离部署容器提前独部署业务向容器API开发业务打包产物独部署运容器加载Dart产物打包Dart产物Container APIs开发阶开发Dart代交付、验收开发环境和运环境分离,H5开发体验容器化体系Dart BusinessDart BusinessDart Business APIsModule APIFlutter FrameworkAPIVersionDart APINative APINative Plugin ImplExtensionImpl Register Flutter API ImplFlutter EngineFlutter for webWeb
6、viewProtocol Handler Image ProtocolAccount ProtocolDefault Protocol Impl Custom Protocol Adapter ProtocolManager Default AdapterAndroidiOSWebMoreHost Platform(Capacity Provider) Image Account Image Account Image Account 容器化结容器化标准化了各端的基础能分离开发关注点,降低开发难度业务开发、部署环境可分离,可以向Web端提供更快更好的开发体验,最终部署在Native获得更好的户
7、使体验Flutter在字节跳动的现状的优势与业务现状录Flutter建设进展与规划简介程实践Flutterw研发套件容器化程案ByteRedux状态管理案总结与展望状态管理背景状态管理Redux的优势图来源:https:/ 成本偏,但维护成本显著降低30022515075Redux没有使Redux2. 全局只有个Store是个问题A. 牵发动全身,全局计算导致性能问题B. 法多协作开发3. 状态是静态定义的A. 数据结构复杂化B. 状态缺乏命周期013未命名 1未命名 3开发/维护成本状态管理案对优势劣势状态可控,变更可预测案成熟ReduxMobX不适应型应、多协作开发第三资源多Dart代码成
8、技术不成熟动成代码状态内嵌时管理混乱ProviderProvideScoped Modle轻量级状态注框架弱化状态管理能状态分散在组件,运时组装状态相对较“重”,概念多,学习成本Fish Redux适合中型应开发全局状态不好处理状态管理ByteRedux案关键问题:Store“超重”,Store需要负责具体UI互动细节,要负责管理全局状态两个核思路:引更级的概念取代Store成为单数据源,管理全局RootStoreTreeStoreStoreStoreStoreStoreStoreByteRedux性能、低学习成本Redirect To RootRoute To TargetRootSync
9、New State To UIUIStoreDispatch ActionStoreStoreStoreStoreByteRedux持模块化开发Root模块AStoreRoot持Mock外部状态进开发模块AStoreStoreStoreStoreStoreStoreStore内嵌于宿主运模块化独运ByteRedux复已有社区资源GithubByteReduxReduxDart.devFlutter.devByteRedux架构AppsBusinessStoresViewModelsRouteMiddlewareBroadcastFlutterLemonConnectorStore Middle
10、wareAdapter AdapterTestStoreFinderByteReduxFrameworkDispatcher RouterStoreTreeProviderTreeRoot VirtualRootByteRunnerFlutter FrameworkByteRedux结1. 具备Redux的所有优势(强管控、可预测、测试友好)2. 性能3. 持模块化开发、运4. 学习成本低5. 复已有社区资源6. 持全局、局部播等新特性Flutter在字节跳动的现状的优势与业务现状录Flutter建设进展与规划简介程实践Flutterw研发套件容器化程案ByteRedux状态管理案总结与展望总结Flutter字节跳动已经成为了新业务的选技术栈之。建设向覆盖了引擎、应框架、基础服务等。程实践Flutterw标准化Flutter的开发环境,提供了案统实施的能。容器化案让运环境提供统基础能,真正实现Write Once,Run Everywhere。ByteRedux状态管理案以很低的成本解决了Redux的问题,保留了Redux的优势,使其适应中型应。展望1. Flutter在字节跳动内作为下代移动端开发技术栈继续推进。2. 在程实践上,围绕开发者体验致于降低使成本,赋予更多能。3. 欢迎家起讨论Flutter、移动端、产品相关的任何话题。