1、Developed by JetBrainsKotlin快团队的 KMP 多平台业务落地实践 张杰 闫昌森2025 Kotlin 中开发者会个简介张杰 快前端架构师 2018年加快,期专注于 移动端架构 和 研发效能 前作为快 KMP 跨端向负责,在快移动端基础架构中负责 App 架构 和 跨端基建,也曾在快视频技术部负责 C+SDK 编译基建建设。拥有有较为丰富的 App 架构设计和基建建设经验。个简介闫昌森 快前端架构师 2020 年加快,专注于前端 架构重构 和 研发效能,在快移动端基础架构中负责 App 架构重构以及跨端技术(KMP)业务实践落地。曾负责移动端基础组件及插件化等相关基建
2、建设,拥有多年移动端基建建设与架构重构落地经验。1.KMP 三端落地总览 2.KMP 三端迁移概述 3.KMP 三端落地实践 4.总结与展望录1.KMP三端落地总览KMP从鸿蒙到三端KMP逻辑层 鸿蒙落地提效KMP逻辑层 三端码多投KMP+CMP 全场景跨端20242025未来KMP三端落地策略复杂度场景性能场景稳定性QoS/QoE 可性验证推频迭代场景落地KMP 三端落地结果1、已覆盖直播、产、社交、消费等核业务,完成核场景三端上线。2、线上验证QoE/QoS基本损,验证了KMP在三端复杂场景的可性。3、KMP三端研发基建已完成建设,但基建成熟度相原仍有差距,需要持续提升。4、前正在进更范围
3、业务推落地。2.KMP 三端迁移概述KMP 架构渐进式迁移示意迁移中间态:依赖原能理想态:KMP闭环开发对应:SDK场景,持次性迁移对应:业务源码场景,不持次性迁移KMP 迁移过程拆解3.KMP 三端迁移实践快复杂业务场景-产直播链路介绍频/跨语通信链路性能保证在采集+推流的复杂链路下打通频通信能并解决性能问题KMP C+跨语机制不够完善半动,需要补,补过程中存在内存管理和性能坑点频实时性链路、多技术栈结合业务特点:挑战:快复杂业务场景-整体架构设计架构阶段具备渐进式迁移能,兼容多端异构架构开发阶段跨语,基础库等核研发能,撑KMP编码实现调试阶段断点调试,Profile具分析等能上线阶段发布集
4、成能,稳定性监控能,撑线上运维架构阶段原能注/KMP 定义业务能注能接,并提供全局注法 interface ServiceDelegate fun doSomething()fun inject(delegate:ServiceDelegate)/原能实现在合适的时机注ServiceInjector.inject(ServiceDelegateImpl()/通业务原能注 class ServiceManager private val services=mutableMapOf()fun register(key:ServiceKey,s:IService)require(serviceske
5、y=null)Service$key duplicated serviceskey=s 注和使时机 避免时序问题带来bug通能Service化 避免基础能的重复定义和注关注点:跨语数据结构传递胶层实现成本 强依赖全量字段转换避免数据丢失,不持渐进式下沉数据致性难保证 双实例拷,修改不可,同步成本,易出错临时案:对象拷 对象拷对象拷跨语数据结构传递改造彻底 仅存在套数据结构,不再需要考虑多份数据结构的兼容问题。改造成本过 需要次性将所有使位置替换,成本,险。终态案:数据完整下沉 跨语数据结构传递持渐进式迁移 次进 interface 抽象可以先迁移核部分,后续各业务可根据实际需求,在需要时逐步补
6、充缺失字段数据度致性 KMP 和 Native 操作的是同类型的对象,不存在内容丢失、状态不致的问题可案:对象代理 开发阶段K/N 与 OC 循环引问题/Kotlin/Nativeinterface Delegate fun onResult(result:String)class Manager var delegate:Delegate?=null fun start()delegate?.onResult(Work Done)/Objective-C-(void)viewDidLoad super viewDidLoad;self.manager=Manager alloc init;s