开源公告|Kuikly 跨平台开发框架
Kuikly 是腾讯大前端领域 Oteam(公司级)推出的,面向客户端开发的全新跨端解决方案。Kuikly 基于 Kotlin Multiplatform(KMP) 技术,可以使用 Kotlin 原生开发语言创建 Android、iOS、鸿蒙、Web、小程序应用。
开源简介
Kuikly 是腾讯广泛使用的跨端开发框架,基于 Kotlin Multiplatform 技术构建。经过多个开发团队的持续打磨与优化,该框架已具备出色的稳定性和可用性,为开发者了提供技术栈更统一的跨端开发体验。今天,我们将这份沉淀开源贡献到业界,希望与社区开发者共同打造一套:一码多端、极致易用、动态灵活的全平台高性能开发框架。
特性优势
1. 一码五端,支持鸿蒙平台
已支持 Android、iOS、鸿蒙、Web、小程序五个平台,其中本次开源 Android、iOS 平台,计划 5 月份开源鸿蒙支持,Q2 开源 Web 和小程序支持。
2. 原生级性能体验
得益于 KMP 跨平台能力,Kuikly 将 Kotlin 代码编译成各个平台原生产物( .aar/framework等),从而获得接近原生平台的执行性能。
2.1 与原生性能对比(高中低端机)
- Kuikly 开发的页面首屏耗时,与原生基本一致;
- 在内存方面,由于 Kuikly 基于 KMP 编译及原生渲染,无额外引擎引入,内存增量与原生相差不大。
Kuikly测试数据基于复杂 Feeds 流 Demo 测试,Demo代码已包含在开源代码中
2.2 与其他框架性能对比:
从整体看,Kuikly 在启动和内存上都具有更好的表现。
实际效果一览
通过与原生录屏对比,可以看到 Kuikly 和原生在体验上几乎没有差别。
Android:
从左至右分别是:原生、Kuikly-内置和Kuikly-动态化。
iOS:
从左至右分别是:原生、Kuikly-内置和Kuikly-动态化。
3. Kotlin 语言驱动,纯原生开发工具链
Kuikly 使用 Kotlin 作为开发语言,使用原生 IDE( Android Studio / VS Code ) 和原生性能分析工具,从业务代码到框架代码层,使用统一技术栈完成开发,调试和性能分析,从而实现框架开发技术栈自闭环。
4. 声明+响应式 DSL,单端开发效率进一步提升
自研声明式 + 响应式 DSL,提升 UI 开发效率。同时,Compose DSL 正在支持中,计划 Q2 正式开源。
5. 支持页面级动态化
Kuikly 支持内置和动态化按需切换,具有页面维度更新、无 hook 稳定性高等优势。动态化模式性能表现上,Android 动态化采用平台产物,性能几乎没有损耗,即便在中低端机仍有接近原生表现。
6. 轻量稳定,业务大规模使用
6.1 各流行框架安装包大小对比:
6.2 Kuikly 在腾讯广泛使用
Kuikly 是腾讯广泛使用的跨端框架,已在 15+ APP 落地500+页面,助力各业务通过跨端开发显著提效。随着鸿蒙平台的适配加速,未来将会发挥更大的价值。
架构及原理
Kuikly 在设计上践行与原生一致的技术栈理念,减少开发者的技术栈跨越。即复用终端的开发语言、工具和生态,拥有接近原生性能和原生渲染,同时是声明式(类似 Compose 和 SwiftUI)和轻量的。
基本原理
借助 KMP(Kotlin Multiplatform),既可以通过 AOT 的产物实现高性能的跨平台体验、也可以通过下发动态化产物实现代码动态更新能力。
架构图概览
框架设计上,基于 Kotlin 语言特性抽象出通用的声明式跨平台 UI 框架,映射到系统原生控件渲染,最终通过 KMP(Kotlin Multiplatform)实现 UI 和逻辑跨端。
跨端 Core层(核心逻辑):
- DSL 驱动:包含自研的声明+响应式 Kuikly DSL 与标准的 Compose DSL(建设中);
- BuildTree:高性能的 DSL 组件树映射生成 Native UI 树的核心逻辑,包括2棵树映射方案、精细化的 O(1) Diff 更新算法、渲染指令生成等逻辑
- UI 统一控件:核心是保证多平台一致性,在跨端层重新实现了大量的复杂高阶组件(如ListView、ViewPager、Waterfall等),少量 Native 原子组件则通过统一接口层直接映射到原生
- 布局引擎:通过成熟的 yoga 布局引擎来支持流行的 FlexBox 布局
Native 渲染层(特点是轻量化):
- 统一的平台接口层:保证 Native 各平台能力的接口统一
- 原生UI映射:最小化的原子渲染组件,仅 Text、Image、Input、ScrollView 等少量组件放到 Native 层
- API 实现模块:供各平台扩展统一 API 提供给跨平台层使用
- Core 与 Render 层之间的通信,规避了 KMP 的 actual/expect 直接依赖调用方式,采用callKotlin/callNative 的指令通信方案,实现了 Kotlin 跨端层与 Native 渲染层之间的编译隔离,从而支持跨平台层(Core与业务代码)动态化更新能力。
KuiklyBase 基础设施:鸿蒙 Kotlin/Native 适配以支持鸿蒙高性能运行,以及调试、质量监控、发布、组件生态等配套基础设施。
项目规划
本次开源能力
开源涉及多方面工作,我们会有序,按计划地将框架能力开源给社区。本次优先开源 Android、iOS平台的跨端能力支持。
后续项目规划
- 开源更多平台的支持。计划5月开源鸿蒙平台支持;Q2 开源 Web、小程序平台支持。
- Compose DSL 计划 Q2 开源
- KuiklyBase 基建,包括 Kotlin/Native 鸿蒙适配开源、组件生态建设、调试工具,脚手架工具配套基建等。具体参见项目Readme的Roadmap。
项目地址
项目官方网站:
文档中心:
/%E7%AE%80%E4%BB%8B/arch.html
Github主仓库:
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-29,如有侵权请联系 cloudcommunity@tencent 删除开源开发跨平台框架渲染
发布评论