Kotlin跨平台在美团餐饮系统的实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. Kotlin跨平台在美团餐饮系统的实践
银
2. 个
3. 美团餐饮系统:业务背景
4. 美团餐饮系统
站式智能化餐饮解决
中型餐饮企业提供
美团餐饮系统智能版为多业态、
案。
5. 美团餐饮系统
业务背景(2020)
• 终端多:点餐场景 6 个 App,共有模块逻辑层基本 致,UI和交互存在差异
• 低性能设备多:Android&Windows 设备利旧,普遍配置较低
6. 案选型
R/N通过JS包装原
控件,Flutter直接使
染
★★★☆☆
相对较低,需要学习新语
Skia渲
原
实现
Compose Multiplatform
★★★★☆
很低,具备Java基础的学习Kotlin语
成本很低
法调
7. Kotlin Multiplatform
KMP
8. Kotlin Multiplatform
发展史
Kotlin:2.0
2024
Kotlin:1.9.20
2023
Kotlin:1.7.20
2022
Kotlin:1.4.0
2020
Kotlin:1.2.0
2017
KMP:Experimental
KMM:Alpha
KMM:Beta
KMP:Stable
KMP:?
9. Kotlin Multiplatform
简介
• Open-source technology by JetBrains for flexible multiplatform development
• Share code without compromising quality
• Suitable for all kinds of projects
10. Kotlin Multiplatform
官
示例
程
11. Kotlin Multiplatform
跨平台原理-原
平台互操作
预置平台API
三
平台API
Common
except/actual
Android
gradle依赖
jar/aar
iOS
cinterop
pod/.h
12. Kotlin Multiplatform
*.class
*.bc
*.js
*.wasm
13. 业务实践
14. 整体架构
协程
定时器
时间
UUID
序列化
事件总线
对象转换
件存储
基础框架 平台桥接 组件模板
编码规范 Debug调试 单元测试
代码检查 打包发布 依赖集成
数据埋点 监控报警 降级策略
加解密
WebSocket
跨平台基建
撑
15. 打印SDK
背景
Core
Android Adapter
Android Demo
驱动管理
设备发现
测试Demo
•
•
•
•
任务调度
模版解析
“JVM” for iOS ❌
ObjC/Swift 重写 ❌
J2ObjC 转换 ❌
KMP ✅
❓
Windows Adapter
Windows Demo
?
iOS
16. 打印SDK
实施:Java -> Kotlin/JVM
Core
(Kotlin/JVM)
Android Adapter
(Java) Windows Adapter
(Java)
Android Demo
(Java) Windows Demo
(Java)
1.
2.
3.
4.
*.java -> *.kt
*.kt 错误修正
*.kt 编译通过
*.kt Demo验证
17. 打印SDK
实施:Kotlin/JVM -> Kotlin/Common
Common Core
(Kotlin)
Jvm Adapter
(Kotlin/JVM)
Android Adapter
(Java) Windows Adapter
(Java)
Android Demo
(Java) Windows Demo
(Java)
1.
2.
3.
4.
5.
6.
Common和Jvm边界确定
改造 案调研设计
Gradle 程改造
代码改造
编译通过
Demo验证
18. 打印SDK
实施:Kotlin/Native iOS 适配
Common Core
(Kotlin)
Jvm Adapter
(Kotlin/JVM)
Android Adapter
(Java) Windows Adapter
(Java)
Android Demo
(Java) Windows Demo
(Java)
iOS Adapter
(Kotlin/Native)
iOS Demo
(Compose)
1.
2.
3.
4.
5.
适配 案调研设计
核 功能适配(WiFi)
MVP Demo验证
剩余功能适配(蓝 )
整体功能回归
19. 打印SDK
ThreadPoolExecutor
Thread
AtomicInt
NSCondition
NSThread
20. 打印SDK
结果:跨平台基础能
Common Core
(Kotlin)
任务调度
模版解析
Core
KMP ✅
Jvm Adapter
(Kotlin/JVM)
iOS Adapter
(Kotlin/Native)
Android Demo
Windows Adapter
Windows Demo
Android Adapter
驱动管理
设备发现
测试Demo
Android Adapter
(Java) Windows Adapter
(Java)
Android Demo
(Java) Windows Demo
(Java)
iOS Demo
(Compose)
21. Java 转 KMP
法论
*.kt
(Kotlin/JVM)
*.java
(Java)
J2KT
*.kt
(Kotlin/JVM)
KMP
*.kt
(Kotlin/Common)
*.kt
(Kotlin/Native)
22. 跨平台接
层实践
23. iOS集成
基础能
络
层
Maven
存储
24. iOS集成
❌
Framework Xcode Project
实现
Pod 依赖
❌
接
抽象
Framework Xcode
Project
25. iOS集成
• NSClassFromString、conformsToProtocol
• NSSelectorFromString、respondsToSelector、
performSelector
26. React Native Bridge
React Component
Bridge
NativeModule
RCTBridgeModule
KMPBridgeModule
(sync/async)
• 桥协议抽象:code/msg/data
• 桥调
KMPApiCallManager
:服务注册发现
27. 实践总结
28. 稳定性&性能保证
外部调研
•国内外20+个团队
• 稳定性问题
内部论证
• PV 模块改造,监控 Crash 率
• 法耗时/FPS/CPU/内存
•AB策略
29. 稳定性&性能保证
完成 KMM 从 0 到 1 的探索
常规技术
稳定性达标(Crash率低于0.4‱)
业务改造
核
模块逻辑层逐步改造
效率提升
业务逻辑多端复
30. 终端架构总结
KMP适 场景( 性能)
跨平台逻辑层:平台相关较少,菜单/购物 /结账等
基础能 层:最 化复 现有原 存量资产, 志/打印等
性能
原
• 低端设备
• 交互复杂
KMM Common
KMP
except/actual
•RN Bridge
KMP+RN
Android
• 快速上线
• 偏展示类
React Native
动态化
React Native
gradle依赖
jar/aar
iOS
cinterop
pod/.h
JS
gradle npm
npm
31. KMP最新进展和未来展望
32. 最新进展
Kotlin 2.0
33. 最新进展
Android 官
持 KMP
Jetpack Library: DataStore、Paging、Room、Lifecycle、ViewModel、Navigation
Google Workspace: Java/J2OC to KMP
34. 跨平台UI展望
View
进
React Native
UIKit
步统
技术栈?
HarmnoryOS
(ArkUI)
?
跨平台逻辑层
Kotlin/JS
基础能
层
Kotlin/Native
35. Compose Multiplatform
Jetpack Compose
Alpha
2020/8
Beta
2021/2
1.0
2021/7
1.1
2022/2
1.2
1.3
2022/7 2022/10
1.4
2023/1
1.5
1.6
2023/8
2024/1
2020/11 2021/5 2021/12 2022/2 2022/10 2023/1 2023/4 2023/9 2024/5
Desktop M1 Web Preview Desktop 1.0 Desktop 1.1 Desktop 1.2 Desktop 1.3 MP 1.4
MP 1.5
iOS Alpha
Web/Wasm Exp
MP 1.6.10
iOS Beta
Web/Wasm Alpha
Compose Multiplatform
MP: Multiplatform
Exp:Experimental
36. Compose Multiplatform
37. Compose Multiplatform
Material
Material 3
Compose Animation
Compose Foundation
Compose
Compose
Compiler
KMP
Deskt
op
iOS
Web
Android
Compose UI
Skiko
Compose Runtime
android.graphics.Canvas
Skia
38. 动态化展望
屏优化:模块化、异步下载、缓存、预置包
39. 后续计划
40. 招聘:美团餐饮系统客户端 程师
邮箱:liuyinlong@meituan.com
更多技术 货
欢迎关注“美团技术团队”