美团客户端动态化实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 美团客户端动态化实践
美团点评:方锦涛
2.
3.
4. 目录
美团动态化的背景
动态化技术方案概览
美团客户端动态化体系
移动端动态化未来之路
5. 关于美团
•
200+品类
到店
到家
…
…
出行
…
6. 关于美团客户端平台
•
众口难调
− 业务发展阶段不一样
− 团队技术栈不一样
− 历史包袱不一样
7. 移动端开发的痛点
Native
•
•
多端开发
升级慢
H5
•
•
功能弱
体验差
8. 动态化的目的
•
提高迭代效率 – 相对Native
开发效率:多端开发
更新效率:升级慢
•
提高用户体验 – 相对H5
功能问题
体验问题
9. 目录
动态化的目的
动态化技术方案概览
美团客户端动态化体系
移动端动态化未来之路
10. 动态化技术方案概览
已知方案
百度 轻应用, 小程序, DynamicLoadAPK, ReactNative, HtmlNative
阿里巴巴 支付宝小程序, Weex, Atlas, Tangram
腾讯 微信小程序, VasSonic, ReactNative
Google Android Instant App, Progressive Web App, Flutter
Facebook ReactNative
携程 DynamicAPK, Ctrip ReactNative(CRN)
滴滴 VirtualAPK, DynamicCocoa
其他 快应用
11. 动态化技术方案总结
新开发模式
虚拟运行环境
布局动态化
FlexboxLayout
Yoga
ReactNative Flutter
Tangram
Weex
快应用
偏Native
偏H5
Atlas DroidPlugin VasSonic PWA
VirtualAPK InstantApp PhoneGap 小程序
业务插件化(Android)
原有开发模式
Web容器增强
12. 动态化之路
Native
H5
13. 动态化方案的选择
• 迁移效率
• 开发效率
• 更新效率
• 稳定性
• 流畅度
14. Web容器增强
短期运营业务-案例:
Web能力增强(Hybrid/PWA)
迁移效率
各类节日运营活动、广告运营活动
流畅度
开发效率
稳定性
更新效率
15. 业务插件化
业务插件化(Atlas/DroidPlugin/VirtualAPK)
一键动态化-案例:
迁移效率
老业务一键迁移:美团大交通业务
流畅度
开发效率
稳定性
更新效率
16. 布局动态化
极致稳定性-案例:
布局动态化(Flexbox/Yoga/Tangram)
迁移效率
流畅度
美团首页运营位、外卖首页运营位
开发效率
稳定性
更新效率
17. 虚拟运行环境
新业务动态化-案例:
虚拟运行环境(RN/Weex/Flutter)
迁移效率
美团“发现”Tab
流畅度
开发效率
稳定性
更新效率
18. 动态化技术方案对比
方案 迁移效 开发效 更新效 稳定性 流畅度 适合场景
率 率 率
Web容器增强 高 高 高 中 低 短期运营业务
业务插件化 高 中 中 中 中 一键动态化
Android
布局动态化 低 中 高 高 高 极致稳定性
虚拟运行环境 中 高 高 中 中 新业务尝试
19. 目录
动态化的目的
动态化技术方案概览
美团客户端动态化体系
移动端动态化未来之路
20. 美团客户端动态化的痛点
布局动态化:
动
业务发展阶段不一致
MTFlexbox
态
业务插件化:
化
团队技术栈不一致
求
不
历史包袱不一致
美团插件化框架Hydra
诉
多套解决方案
虚拟运行环境:
MRN
一 Web容器增强:
致 TitansX
21. 美团平台动态化体系全景图
布局动态化
业务
接口
辅助
工具
运行
环境
业务插件化 虚拟运行环境 Web容器增强
MTFlexbox Hydra MRN TitansX
布局模型 一键插件化API 组件和框架 TitansX JS API
DSL定义 Native扩展支持
动态布局IDE 插件构建工具 Bundle拆分工具 调试工具
扩展组件库 调试工具
布局解析器 Multidex加载 多实例运行环境 离线化
Native控件支持 资源管理器替换 稳定性监控 长连接
反劫持
基础动态化服务(升级管理、新版本推送、安全保障等)
22. 布局动态化-IDE工具
23. 布局动态化效果
24. Android业务插件化-方案对比
框架 接入方式
Atlas
(阿里)
迁移成本
代码迁移 资源迁移
特有的awb方式 高 低
VirtualAPK 需要手工配置脚本 未知 高
(滴滴)
RePlugin 业务无法共享组件 高 高
(360)
Hydra 跟库依赖集成一致 零成本 零成本
(美团)
25. Android业务插件化: 难点
资源处理
插件对宿主的资源访问问题
库依赖
无缝切换
代码处理
系统函数调用的兼容性问题
插件依赖
26. 业务插件化: 解决方案
•
介入编译打包过程,全局修改字节码
所有资源
.ap_
美团APK
所有库
所有代码
插件资源
.dex
.ap_
插件APK
插件依赖
插件代码
.dex
27. 美团Android插件化效果
compile(‘train:9.1’)
pluginCompile(‘ train:9.1’ )
28. 虚拟运行环境:MRN
MRN业务开发平台
发布系统 开发工具 业务组件 业务框架 线上运维
发布流程 调试工具 组件规范 应用架构 稳定性监控
静态检查 代码转换工具 UI组件 页面模板 性能监控
持续集成
发布平台
业务异常监控
Native桥
ReactNative框架优化
内核优化
双平台对齐
业务隔离
容灾备份
29. RN的状态
过高期望的
峰值
可
实质生产的
高峰期
见
度
RN的状态
泡沫化的谷
底期
诞生的促动期
成熟度
稳步爬升的
光明期
30. 美团动态化方案总结
方案 业务/页面
布局动态化 美团首页、搜索结果页、外卖首页、美食首页等
MTFlexbox
业务插件化 搜索业务、火车票、机票、周边游、到餐旗舰店、金融闪付等
Hydra
虚拟运行环境 收藏业务、内容业务、火车票部分页面、外卖退款页等
MRN
Web容器增强 各种运营活动页面
TitansX
31. 目录
动态化的目的
动态化技术方案概览
美团客户端动态化体系
移动端动态化未来之路
32. 动态化的未来之路
Native
H5
33. 似曾相识的PC年代
重交互效率工具:CS
其他:BS
34. 动态化的未来之路
示例项目
编辑工具
推荐的方向 例子
业务插件化 各种笔记软件、美颜软件等
插件化、InstantApp
交易工具 Web容器增强/虚拟运行环境
资讯工具 Web容器增强
通讯工具 业务插件化
小程序、快应用、PWA、RN
小程序、PWA
插件化
实物电商、生活服务电商等
各类新闻软件
各类IM、视频聊天工具
35. 动态化的未来之路
• 重交互效率工具 – Native
• 其他– JS
36.
37.
38.
39.