当前位置:首页 > 报告详情

day2_4-吴霖鹏-KMP 在字节跳动的工程化落地实践.pdf

上传人: 明**** 编号:1069625 2026-01-17 74页 16.58MB

1、Developed by JetBrains|KotlinKMP 在字节跳动的程化落地实践 吴霖鹏(XDMrWu)抖基础技术架构2025 Kotlin 中开发者会个介绍吴霖鹏抖基础技术架构毕业安电科技学,2018 年加抖 掘:XDMrWu GitHub:XDMrWu前主要参与字节跨端框架 ByteKMP 的建设与业务落地社区账号1.跨端技术选型 2.ByteKMP 建设 3.落地效果与未来规划录1.跨端技术选型多端开发挑战成本显著增加 多端致性难以保障跨端技术对特点缺点C/C+/Rust 性能 上槛 开发 UI/交互逻辑效率低KMP+CMP 性能 能够复 Android 端存量业务代码和基础设

2、施 具备渐进式演进条件 态相对不够成熟Flutter 性能中 具备动态化能 现有代码法复,需要重写 现有研发流程全部重建程序/Web 性能中 很好的动态化能 现有代码法复,需要重写对性能要求 需要渐进式演进能 Android 存量代码基数,才储备充跨端技术选型对性能要求 需要渐进式演进能 Android 存量代码基数,才储备充+跨端技术选型对性能要求 需要渐进式演进能 Android 存量代码基数,才储备充跨端技术选型2.ByteKMP 建设ByteKMP 整体架构ByteKMP 建设研发效率交互能Compose 性能ByteKMP 建设研发效率交互能Compose 性能AS 查看 HiLog

3、AS 查看 FaultLogAS 查看 FaultLogAS 上断点鸿蒙 Kotlin 代码AS 上断点鸿蒙 Kotlin 代码ByteKMP 建设研发效率交互能Compose 性能跨语交互跨语交互Kotlin-ArkTS?/ArkTSLogger.ets export class ArkTSLogger d(tag:string,msg:string)console.log($tag$msg)export const logger=new ArkTSLogger()?/Index.ets export logger form./src/main/ets/ArkTSLogger 跨语交互Kot

4、lin-ArkTSfun call()?/1.获取 demo/logger 模块 val module=nativeHeap.alloc()napi_load_module_with_info(globalEnv,demo/logger,bundleName,module.ptr)?/2.获取 demo/logger 模块导出的 logger 对象 val log=nativeHeap.alloc()napi_get_named_property(globalEnv,module.value,logger,log.ptr)?/3.获取 logger 对象的 d 法 val dFunc=nati

5、veHeap.alloc()napi_get_named_property(globalEnv,log.value,d,dFunc.ptr)?/4.构造参数 tag、msg,将 Kotlin String 转换为 ArkTS string val tag=KmpTag val msg=KmpMsg val tagVar=nativeHeap.alloc()val msgVar=nativeHeap.alloc()napi_create_string_utf8(globalEnv,tag,strlen(tag),tagVar.ptr)napi_create_string_utf8(globalE

6、nv,msg,strlen(msg),msgVar.ptr)?/5.构造参数数组 val argsValue=nativeHeap.allocArray(2)argsValue0=tagVar argsValue1=msgVar?/6.调 d 法 val result=nativeHeap.alloc()napi_call_function(globalEnv,log.value,dFunc.value,2,argsValue,result.ptr)?/ArkTSLogger.ets export class ArkTSLogger d(tag:string,msg:string)consol

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
1. **跨端技术选型**:字节跳动基于高性能、渐进式演进及Android存量代码复用需求,选择KMP+CMP方案,对比C++/Rust(门槛高)、Flutter(需重写代码)、小程序/Web(性能中)更具优势。 2. **ByteKMP建设**: - **跨语言交互**:通过Kotlin与ArkTS互调,支持函数/类/接口导出,自动生成ArkTS声明。 - **UI混排**:Compose可嵌入ArkUI,原生UI可嵌入Compose(Android/iOS/Harmony),支持布局叠加。 - **性能优化**:Native Drawing使单页面内存占用从107MB降至37MB,包体积减少3MB;PreCompose降低页面加载耗时60%。 3. **落地效果**:已落地10+应用,KMP代码约140万行,多端复用率50%。 4. **未来规划**:补齐iOS基建实现一码三端,开源ByteKMP,探索大模型加速存量代码迁移。
**KMP如何选型?** **ByteKMP架构揭秘?** **跨端性能优化?**
客服
商务合作
小程序
服务号
折叠