陈航MTFlutter 美团外卖Flutter容器化生态建设实践
2020-04-13 333浏览
- 1.MTFlutter:美团外卖 Flutter 容器器 化⽣生态建设实践 陈航 美团点评⾼高级技术专家
- 2.
- 3.⾃自我介绍 美团外卖商家终端团队负责⼈人,极客时间 《Flutter 核⼼心技术与实战》 作者。 曾就职于雅⻁虎北北研和新浪微博,2015年年加⼊入美团,经历了了外卖⽤用户端和商家 端发展的多个阶段,推动了了外卖移动端架构演进、线上运维及终端技术栈融合 等相关⼯工作。
- 4.⽬目录 • 业务背景 • Flutter 的优势和挑战 • Flutter 容器器化⽣生态建设 • 展望和总结
- 5.美团外卖 Flutter 实践历史 2018 Q2 美团外卖⽤用户端调研 美团技术博客:Flutter 的原理理及美团的实践 2018 Q4 美团外卖商家端接⼊入 确定技术选型⽅方向,铺开业务实践,沉淀基建 2019 Q2 美团技术博客2018年年阅读量量前三 业务需求占⽐比>30%,⻚页⾯面数>15,指标与Native持平 美团点评多个事业部中后台业务线上⼤大规模应⽤用 MTFlutter 容器器化基础设施及周边⼯工具链建设 截⽌止⾄至12⽉月15⽇日,共10个 BU,12个 App 接⼊入
- 6.中后台业务特点 •⾯面向⾮非⽤用户 标准化程度低(1个 C 端 App & ⻚页⾯面对应 N 个 B 端 App & ⻚页⾯面),逻辑重,交互复杂,主要解 决数据⽣生产、运营管理理的问题,多端⼀一致性要求⾼高 •⽣生产⼯工具类应⽤用 使⽤用时间⻓长(持续⼗十⼏几个⼩小时),性能和稳定性要求⾼高 • 产品迭代周期短 产品两周⼀一迭代,每个迭代需求众多,开发效率要求⾼高
- 7.⽬目录 • 业务背景 • Flutter 的优势和挑战 • Flutter 容器器化⽣生态建设 • 展望和总结
- 8.MTFlutter Flutter 适⽤用场景 效率、性能、稳定性、多端体验⼀一致 动态性、包⼤大⼩小⽆无特殊诉求 ⼯工程构建 UI代码⾃自动⽣生成 CI/CD 产物托管 SDK定制 集成⼯工具 动态化能⼒力力 运维能⼒力力 … Flutter MTFlutter
- 9.⽬目录 • 业务背景 • Flutter 的优势和挑战 • Flutter 容器器化⽣生态建设 • • MTFlutter ⼯工具链 • 业务⽀支撑 展望和总结
- 10.MTFlutter 标准⼯工作流 将作为原⽣生⼯工程上游的 Flutter 模块开发,抽象为原⽣生依赖产物的⼯工程管理理,并提炼出对应的⼯工作流
- 11.MTFlutter - 脚⼿手架 ⼯工程 初始化 解决环境配置、团队/项⽬目环境统⼀一 SAKGems 打包⼯工作流命令⾏行行⼯工具 宿主/CI环境 开发 调试 gem install flutter_cli -v “0.3.3" 美团云 构建 打包 发布 托管 原⽣生 集成 • • • • • • • install [version] —autodotfiles uninstall upgrade [version] downgrade [version] help config —project=path —sdk-version config —project=path —consistent-sdk flutter_linux_v1.2.1-hotfix.1-stable.tar.xz flutter_macos_v1.2.1-hotfix.1-stable.tar.xz
- 12.⼯工程 构建 开发 调试 MTFlutter - SDK定制 定制模板⼯工程,适配公司基建⽣生态,修复已知问题等,持续提供免坑版SDK Flutter SDK Flutter 引擎、Dart SDK bin/cache ninja engine 源码 Flutter.framework libflutter.so gen_snapshot 美团云 bin/internal/engine.version flutter precache 构建 打包 发布 托管 Flutter 框架、⽀支持⼯工具 packages、flutter_tools • 已知 bug 修复 • 低版本 gradle 兼容 … l c r e lf utt 其他 (开发⼯工具、demo等) 开发机 flutter_linux_v1.5.4-hotfix.100-mt-stable.tar.xz flutter_macos_v1.5.4-hotfix.103-mt-stable.zip 原⽣生 集成 i all t s in ☁美团云 打包机
- 13.⼯工程 构建 MTFlutter - 混合容器器 容器器需求: Native ⻚页⾯面 1. 能够通过 URL 打开或关闭某个 Flutter ⻚页⾯面 开发 调试 构建 打包 • • • • FlutterBoost by 闲⻥鱼 Dart 注解解耦注册 MethodChannel EventChannel Flutter ⻚页⾯面 参数带回 发送⼴广播 Flutter 容器器 发送⼴广播 发送⼴广播 URL跳转 发送⼴广播 发布 托管 RN ⻚页⾯面 原⽣生 集成 实线:Flutter 跳其他⻚页⾯面 虚线:其他⻚页⾯面跳 Flutter URL 跳转 其它⻚页⾯面跳Flutter 参数带回 setResult URL 跳转 Flutter 跳其它⻚页⾯面 AOP 3. 能够调⽤用系统⼴广播的功能 • URL 跳转 统⼀一 URL 规范 2. 能够与其他⻚页⾯面互相转递参数 • setResult URL 跳转 URL跳转 H5 ⻚页⾯面
- 14.⼯工程 构建 MTFlutter - CI/CD 解决 Flutter 项⽬目打包、依赖关联问题 1.Dart 产物编译 开发 调试 2.业务资源复制 3.Flutter 引擎集成 4.原⽣生侧编译流程对接 5.三⽅方插件处理理 打包 构建 发布 托管 原⽣生 集成 6.版本号管理理 升级版本号,更更新 pubspec/pom/yaml 触发 Flutter CI,编译 Flutter 产物 触发原⽣生 CI,部署到 app
- 15.⼯工程 构建 MTFlutter - Dart代码托管 解决 Flutter Package 发布托管问题 开发 调试https://pub.sankuai.compub client Pub server 打包 构建 nodeJS + sso Flutter Package 发布 托管 原⽣生 集成 !"" # # !"" !"" %"" lib !"" xxx.dart %"" main.dart pubspec.lock pubspec.yaml test %"" counter_test.dart !"" flutter_hello_world.iml 美团云 packages
- 16.⼯工程 构建 开发 调试 MTFlutter - ⼆二进制产物托管 解决Flutter项⽬目原⽣生构建产物托管问题 Flutter Project 业务部分(代码与资源)android:'>android: