Kuikly,是指基于Kotlin MultiPlatform(KMP)构建的跨端开发框架,利用KMP的逻辑跨平台能力,抽象通用跨平台UI渲染接口,复用平台UI组件,实现UI跨平台,具备轻量、高性能、可动态化优势;其核心特点是跨平台运行、原生性能、原生开发体验、轻量包体、动态能力、多范式支持,主要解决了多端业务重复开发、性能与体验割裂、研发成本高的问题。Kuikly(跨端框架)是一个由腾讯公司级Oteam推出的高性能、全平台、统一代码库、极致易用、动态灵活的跨端解决方案,具备支持Android、iOS、HarmonyOS、Web(Beta)、小程序(Beta)、macOS(Alpha)六平台、生成平台原生二进制文件、原生UI渲染与工具链、Kotlin为主语言等特点,旨在为多端业务提供统一、高效、优质的开发与运行能力。
其核心优势包括:
- 降低研发成本:一套Kotlin代码覆盖多端,减少重复实现与维护工作量。
- 提升业务投放效率:支持动态化交付物,快速响应运营与版本迭代需求。
- 保障用户体验:复用平台原生UI组件与渲染,保持视觉与交互一致性及流畅度。
一、背景
1、现有技术分类与优缺点
当前行业主流跨端技术可分为两类:
- React Native:采用桥接架构(旧版)或JSI+Fabric(新版),通过JavaScript/TypeScript与原生组件通信完成UI渲染。优点是拥有丰富的npm生态,JS/React开发者易上手;缺点是传统桥接存在异步通信延迟,即便新架构有所优化,在复杂交互场景仍有性能瓶颈,且依赖原生组件导致UI一致性差异显著。
- Flutter:基于自绘引擎Skia直接绘制像素,不依赖平台原生组件。优点是图形密集型场景帧率支持更高,官方插件质量较高;缺点是需要手动更新原生组件以适配平台设计,学习Dart存在门槛,且引擎与Widget树使包体较大,轻量化不及部分方案。
两类技术在性能表现、生态、适用场景上各有侧重,但在业务效率、用户体验、研发成本三方面均显现局限。
2、痛点归纳
从实际业务视角看,现有方案的核心痛点集中在:
- 业务效率:React Native的桥接通信在高并发或频繁交互场景下延迟明显,Flutter需持续手动同步平台UI变化,拖慢迭代速度。
- 用户体验:React Native因依赖原生组件,不同平台呈现效果差异大;Flutter自绘Widget虽一致,但与平台设计规范匹配需额外适配。
- 研发成本:React Native的第三方库兼容性常需二次开发,Flutter的Dart学习与生态迁移增加人力投入;两者在性能与开发效率之间难以兼得。
在需要多端同步上线且追求原生体验的业务场景中,上述痛点会显著放大版本风险与维护压力。
二、方案实践
1、横向对比与竞品剖析
通过核心维度对比可见不同框架的差异与取舍:
| 维度 | Kuikly | React Native | Flutter |
|---|---|---|---|
| 开发语言 | Kotlin | JavaScript/TypeScript | Dart |
| 渲染方式 | 复用平台UI组件 | 原生组件(桥接/JSI) | 自绘Widget(Skia引擎) |
| 动态化能力 | 支持编译为动态交付物 | 需依赖第三方或复杂配置 | 需热重载/动态加载方案 |
| 包大小(AOT) | Android | 较大(依赖桥接与原生库) | 较大(引擎+Widget树) |
| 上手难度 | Kotlin跨端开发者易上手 | JS/React开发者易上手 | 需学习Dart |
| 性能 | 原生二进制,轻量低开销 | 新架构提升但仍存桥接延迟 | 自绘引擎性能优但包体大 |
- React Native不足:传统桥接异步通信在复杂场景产生瓶颈,新架构未彻底消除延迟;UI一致性依赖原生组件,跨平台视觉效果难统一;第三方库兼容性需额外适配工作。
- Flutter不足:自绘Widget需手动更新原生组件以跟进平台设计;Dart学习曲线增加团队培养成本;包体较大影响轻量化部署。
正因如此,直接沿用任一现成方案均难以在多端高效、一致、低成本地满足业务诉求。
2、自研优势说明
Kuikly吸收业界优点并自主创新,形成差异化竞争力:
- 卡片级动态化渲染:实现快速渲染与无缝对接既有系统。
- 高性能列表技术:优化滚动与加载性能。
- 多平台原生渲染接口:复用平台UI组件,保障体验一致性。
- 轻量SDK:AOT模式下Android约300KB、iOS约1.2MB,显著降低安装体积。
- 双DSL支持:同时提供自研DSL与标准Compose DSL(Beta),适配不同开发习惯。
- 全流程工具链:覆盖脚手架、调试、构建、发布、监控,联动Bugly质量监控与Shiply发布止损,形成闭环。
3、实现细节分块讲解
Kuikly自研方案可拆解为六大子板块,确保技术可理解性与完整性:
2.1、源代码
- 构成:core模块包含响应式UI、布局算法、Bridge通信等核心能力;commonMain定义跨平台接口;各平台Main输出对应产物。
- 运行机制:通过KMP共享业务逻辑,在commonMain约定接口,各平台实现渲染与系统交互,保证一次编写、多端生成。
- 解决问题:消除平台间重复代码,统一逻辑实现,降低维护成本。
2.2、脚手架
- 构成:覆盖从项目初始化、代码生成、实时调试到构建发布的全流程工具。
- 运行机制:与KMP及平台工具链深度集成,提供一键创建、热重载、模拟器调试等功能。
- 解决问题:缩短环境搭建与调试周期,提高开发效率。
2.3、产物管理
- 构成:编译阶段生成平台原生二进制文件(.aar/.framework/.so),AOT模式严格控制包体。
- 运行机制:在构建流程中剥离不必要资源,仅保留运行时必需代码。
- 解决问题:实现轻量化部署,减少下载与安装阻力。
2.4、产物运行
- 构成:多平台原生渲染层,直接调用系统UI组件。
- 运行机制:运行时通过Render模块映射跨端接口至平台实现,如Android的core-render-android、iOS的core-render-ios。
- 解决问题:保持原生性能与体验,避免桥接或自绘带来的额外开销。
2.5、统一接口声明
- 构成:API模块提供跨平台统一接口,涵盖组件、动画、手势、布局等能力。
- 运行机制:在commonMain中声明接口契约,屏蔽平台差异。
- 解决问题:让开发者聚焦业务逻辑,无需关心底层实现差异。
2.6、接口实现
- 构成:各平台Render模块实现渲染逻辑,并与平台工具链、生命周期管理集成。
- 运行机制:接口与实现分离,保证扩展性,可随平台升级独立迭代。
- 解决问题:提升跨端方案的可持续维护与演进能力。
三、应用场景
1、卡片场景
在即时信息与运营活动频发的业务中,卡片是高频载体。原有React Native方案因桥接延迟与UI不一致,导致卡片刷新卡顿、平台间呈现差异。Kuikly的卡片级动态化渲染技术,源于腾讯内部多业务孵化的实际需求,可在保持原生渲染路径的同时,实现快速局部更新,并无缝对接既有系统,避免全页重载带来的体验断裂。该技术在腾讯内部多业务中得到应用,体现了跨端一致性与刷新效率的技术可行性。
2、页面场景
在卡片能力基础上,Kuikly扩展至页面级跨端开发,新增富文本、视频播放、滑动容器等组件,并内建埋点与曝光监测机制。业界常见埋点因跨端事件模型差异易出现漏采或时序错乱,Kuikly通过统一接口与平台实现联动,使曝光判断与行为数据采集精准且低侵入。此机制已在腾讯内部多业务的页面迭代中采用,为数据采集提供稳定基础。
3、未来场景
Kuikly已具备从局部卡片到完整页面的跨端能力,未来可进一步发展为完整APP开发方案。依托多平台原生渲染与轻量SDK,可直接产出可在Android、iOS、HarmonyOS等系统独立运行的二进制包,减少多端发布链路复杂度。这一路径为业务提供从功能模块到全端产品的平滑升级通道,特别适合需在多生态同步上线的超级应用与垂直领域产品。
四、快速接入
官方文档:kuikly.tds.qq.com/
GitHub:github.com/Tencent-TDS…