Kuikly跨端框架解析

1 Kuikly框架概述

Kuikly是騰訊大前端領域Oteam(公司級)推出的面向客戶端技術的跨端開發(fā)框架,完全基于Kotlin語言開發(fā),提供原生的性能和體驗。作為基于Kotlin Multiplatform (KMP) 的UI與邏輯全面跨端綜合解決方案,Kuikly旨在提供一套一碼多端、極致易用、動態(tài)靈活的全平臺高性能開發(fā)框架。截至目前,Kuikly已支持Android、iOS、鴻蒙三大移動平臺,并支持Web和小程序平臺。

1.1 核心特性與優(yōu)勢

Kuikly框架具有以下幾個顯著特點和優(yōu)勢:

  • 一碼多端:支持使用單一代碼庫同時輸出Android、iOS、鴻蒙、Web和小程序五端應用。這極大地降低了多平臺開發(fā)的成本和維護工作量。
  • 原生性能體驗:得益于KMP跨平臺能力,Kuikly將Kotlin代碼編譯成各個平臺原生產(chǎn)物(如Android的.aar和iOS的framework),從而獲得接近原生平臺的執(zhí)行性能。測試數(shù)據(jù)顯示,其頁面首屏耗時與原生基本一致,內(nèi)存占用也相差無幾。
  • Kotlin語言驅動:完全采用Kotlin作為開發(fā)語言,使用原生IDE(Android Studio/VSCode)和性能分析工具,實現(xiàn)了從業(yè)務代碼到框架代碼層的統(tǒng)一技術棧開發(fā)閉環(huán)。
  • 雙開發(fā)范式:支持自研聲明式+響應式DSL,同時也在逐步支持Compose DSL,提供靈活的UI開發(fā)選擇。
  • 動態(tài)化支持:支持頁面級動態(tài)化能力,可按需切換內(nèi)置和動態(tài)化模式,具有頁面維度更新、性能高、無hook穩(wěn)定性高等優(yōu)勢。
  • 輕量穩(wěn)定:框架設計精巧,無復雜外部依賴,安裝包體積增量小,穩(wěn)定性和可維護性高。

Kuikly整體架構

截屏2025-09-15 14.46.20.png

2 Kuikly核心原理剖析

2.1 架構設計理念

Kuikly框架在設計上踐行與原生一致的技術棧理念,減少開發(fā)者的技術??缭?。它復用終端的開發(fā)語言、工具和生態(tài),擁有接近原生性能和原生渲染,同時采用聲明式(類似Compose和SwiftUI)和輕量的設計思路。整個框架架構分為三個核心層次:

  • 跨端Core層:包含自研的聲明+響應式Kuikly DSL與標準的Compose DSL(建設中),負責高性能的DSL組件樹映射生成Native UI樹的核心邏輯,包括2棵樹映射方案、精細化的O(1) Diff更新算法、渲染指令生成等邏輯。此層還重新實現(xiàn)了大量的復雜高階組件(如ListView、ViewPager、Waterfall等),保證多平臺一致性。

  • Native渲染層:特點是輕量化,提供統(tǒng)一的平臺接口層,包含最小化的原子渲染組件(僅Text、Image、Input、ScrollView等少量組件)。該層還提供API實現(xiàn)模塊,供各平臺擴展統(tǒng)一API給跨平臺層使用。

  • KuiklyBase基礎設施:提供鴻蒙Kotlin/Native適配以支持鴻蒙高性能運行,以及調(diào)試、質(zhì)量監(jiān)控、發(fā)布、組件生態(tài)等配套基礎設施。

2.2 渲染機制與薄原生層設計

Kuikly通過自研DSL構建UI,在不同平臺上映射到不同的原生UI系統(tǒng)。在iOS平臺使用UIKit,在Android平臺則可以使用原生View系統(tǒng)或Compose(計劃中)。與其他跨端框架不同的是,Kuikly實現(xiàn)了自己的"薄原生層"。

這個薄原生層只暴露最基本和無邏輯的UI組件(原子組件),真正的UI邏輯主要在共享的Kotlin代碼中實現(xiàn)。通過將UI邏輯抽象到共享的Kotlin層,減少平臺特定UI差異或行為差異的可能性,薄原生層充當一致的渲染目標,確保Kotlin定義的UI元素在所有平臺上都以類似的方式顯示。

目前Kuikly實現(xiàn)了60% UI組件的純Kotlin組合封裝實現(xiàn),不需要Native提供原子控件。僅Text、Image、Input、ScrollView 等少量組件放到Native層。最容易出現(xiàn)不一致的高階組件都通過Kotlin實現(xiàn),比如List列表控件,Kuikly通過對齊Native的List內(nèi)部實現(xiàn)原理,然后再用Kotlin重寫一次,從而實現(xiàn)真正的高一致性UI組件跨平臺實現(xiàn)。

2.3 性能優(yōu)化策略

Kuikly以高性能、動態(tài)化為框架核心目標,在多個層面實施了性能優(yōu)化策略:

  • 編譯期優(yōu)化:利用KMP將Kotlin代碼編譯成各個平臺的原生產(chǎn)物,消除解釋執(zhí)行或虛擬機運行時的性能開銷。
  • 渲染優(yōu)化:采用O(1) Diff算法實現(xiàn)精細化的UI更新,避免不必要的全局重繪。
  • 內(nèi)存管理:引入對象復用機制,對高頻創(chuàng)建和釋放的組件實施白名單管理的復用池,減少內(nèi)存分配和垃圾回收的開銷。
  • 文本渲染專項優(yōu)化:在鴻蒙平臺上,通過利用系統(tǒng)提供的文本繪制接口進行直調(diào)繪制,復用布局結果,徹底解決文本重布局問題。

3 多平臺Demo實現(xiàn)

參考官方鏈接:
https://kuikly.tds.qq.com/QuickStart/env-setup.html

4 Kuikly DSL與Compose DSL

Kuikly 框架提供了兩種 UI 開發(fā)方式:自研的 Kuikly DSL 和兼容 Jetpack Compose 語法的 Compose DSL。它們共享 Kuikly 的核心架構與多端支持,但在實現(xiàn)原理和特性上有所不同。下面這個表格匯總了它們的主要區(qū)別,之后我會進一步解釋。

特性維度 Kuikly DSL (自研) Kuikly Compose DSL (Beta)
設計理念與語法 自研聲明式+響應式DSL 兼容 Jetpack Compose 語法與 API
渲染機制 原生控件渲染 (通過"薄原生層"映射為各平臺原生UI組件) 原生控件渲染 (復用 Kuikly 通用渲染層,非 Skia 自繪)
跨平臺支持 Android, iOS, HarmonyOS, Web, 小程序,Desktop Android, iOS, HarmonyOS, H5(alpha), 微信小程序(alpha),Desktop(規(guī)劃中)
動態(tài)化能力 ? 支持 (頁面級動態(tài)化,核心優(yōu)勢) ? 支持 (繼承 Kuikly 動態(tài)化能力)
性能特點 接近原生 (iOS平臺編譯為Native代碼,鴻蒙版實測原生級表現(xiàn)) 接近原生 (非Skia自繪,復用Kuikly原生渲染優(yōu)勢)
包體積影響 較小 (Android端約300KB, iOS端約1.2MB) 相對較小 (基于Kuikly原生渲染,無需Skia引擎)
學習成本 需學習Kuikly自研DSL 對Android Compose開發(fā)者更友好
現(xiàn)狀與成熟度 已正式開源,內(nèi)部廣泛應用 Beta版

4.1.核心共通點

盡管存在差異,但兩者都基于 Kotlin Multiplatform (KMP) 技術,并共享 KuiklyBase 提供的基礎設施(如調(diào)試、構建、監(jiān)控),都致力于實現(xiàn) “一碼多端” 。

4.2.如何選擇?

  • 追求極致的原生性能、動態(tài)化能力和更穩(wěn)定的生產(chǎn)環(huán)境:Kuikly DSL 是當前更成熟穩(wěn)妥的選擇。
  • 項目需要覆蓋 Web 或小程序平臺:Kuikly DSL 對這些平臺的支持已在規(guī)劃中。
  • 團隊具備豐富的 Android Jetpack Compose 開發(fā)經(jīng)驗,且優(yōu)先追求開發(fā)效率與代碼風格統(tǒng)一:可以嘗試 Kuikly Compose DSL,但需留意其 Beta 狀態(tài)。
  • 應用高度依賴 Skia 自繪以實現(xiàn)極致自定義 UI 或復雜動畫:Kuikly 的兩種 DSL 目前均采用原生渲染,可能不是最優(yōu)先選擇。你可以了解騰訊的 ovCompose(基于 Compose Multiplatform 和 Skia 自繪)。

4.3.總結

Kuikly 的兩種 DSL 提供了側重點不同的跨端 UI 解決方案:

  • Kuikly DSL 更像是一個“性能優(yōu)先、多端覆蓋” 的務實派,自研道路保證了控制力和優(yōu)化深度。
  • Kuikly Compose DSL 則像一個“體驗優(yōu)先、生態(tài)兼容” 的革新派,旨在降低開發(fā)者學習成本并擁抱更廣泛的 Compose 生態(tài)。

選擇哪條路徑,取決于你的項目優(yōu)先級和團隊技術背景。希望這些分析能幫助你做出更合適的決策。

5 KuiklyUI與KuiklyBase

5.1 功能定位與職責劃分

Kuikly框架由兩個核心部分組成:KuiklyUIKuiklyBase。這兩個部分各有側重,共同構成了完整的Kuikly跨端開發(fā)生態(tài)。

KuiklyUI是框架的UI部分,主要負責:

  • 提供聲明式UI開發(fā)范式,包括自研DSL和Compose DSL兩種選擇
  • 實現(xiàn)跨平臺UI渲染,將Kotlin UI代碼映射到各平臺原生UI組件
  • 管理UI生命周期狀態(tài)變化
  • 處理用戶交互事件響應
  • 支持頁面級動態(tài)化更新

KuiklyBase則是框架的基礎設施部分,主要提供:

  • 跨平臺邏輯共享能力,支持非UI業(yè)務的邏輯跨端
  • 平臺適配層,特別是鴻蒙Kotlin/Native適配
  • 調(diào)試工具性能監(jiān)控設施
  • 構建系統(tǒng)發(fā)布工具
  • 組件生態(tài)依賴管理

5.2 協(xié)作關系與集成方式

KuiklyUI與KuiklyBase之間存在密切的協(xié)作關系。KuiklyUI依賴于KuiklyBase提供的底層基礎設施和能力,而KuiklyBase則通過KuiklyUI驗證和優(yōu)化其功能設計。

在實際項目中,開發(fā)者可以根據(jù)需要選擇使用完整的Kuikly(包含UI和Base)或僅使用KuiklyBase。對于已經(jīng)有現(xiàn)有UI層,只需要共享非UI邏輯的場景,可以單獨使用KuiklyBase;對于全新項目,則可以使用完整的Kuikly框架。

表:KuiklyUI與KuiklyBase的關系

特性 KuiklyUI KuiklyBase
核心功能 UI渲染、交互管理 基礎設施、工具鏈
使用場景 全新UI開發(fā) 邏輯共享、現(xiàn)有項目改造
動態(tài)化支持 頁面級動態(tài)化 邏輯動態(tài)化
平臺支持 Android、iOS、鴻蒙、Web、小程序 Android、iOS、鴻蒙、Web、小程序
兼容性 需整體接入UI框架 可逐步接入,與現(xiàn)有代碼共存

5.3 實際應用場景

在騰訊內(nèi)部,KuiklyUI和KuiklyBase已經(jīng)被廣泛應用到多個產(chǎn)品中。例如,騰訊視頻、QQ瀏覽器、騰訊新聞等應用使用KuiklyUI開發(fā)全新的跨平臺頁面;而一些已有的成熟產(chǎn)品則選擇使用KuiklyBase來實現(xiàn)業(yè)務邏輯的跨端共享,同時保持現(xiàn)有的UI層不變。

這種靈活性使得Kuikly可以適應不同的遷移和改造場景:

  • 全新項目:可使用KuiklyUI+KuiklyBase全面跨端開發(fā)
  • 已有項目,需要共享邏輯:可單獨使用KuiklyBase實現(xiàn)非UI邏輯跨端
  • 已有項目,需要完整改造:可逐步將UI遷移到KuiklyUI,同時使用KuiklyBase共享業(yè)務邏輯

6 Kuikly與ovCompose

6.1 背景與起源

ovCompose(online-video-compose)是騰訊視頻團隊基于Compose Multiplatform生態(tài)推出的跨平臺開發(fā)框架,旨在彌補JetBrains Compose Multiplatform不支持鴻蒙平臺的遺憾與解決iOS平臺原生UI混排受限的問題。

雖然ovCompose和Kuikly都是騰訊推出的跨端解決方案,且都基于KMP技術,但它們的設計目標和實現(xiàn)方式有顯著差異。兩者都依賴于KuiklyBase基礎設施,共享底層的KMP支持和鴻蒙編譯鏈。

6.2 技術架構差異

Kuikly和ovCompose在技術架構上有著根本性的區(qū)別:

Kuikly采用原生控件渲染方案,通過薄原生層將Kotlin UI代碼映射到各平臺原生UI組件。它的優(yōu)點是性能接近原生、內(nèi)存占用低、與平臺UI無縫集成;缺點是需要處理各平臺UI差異,實現(xiàn)復雜度高。

ovCompose采用Skia自繪渲染方案,通過Skia圖形庫在所有平臺上一致地繪制UI。它的優(yōu)點是UI一致性極高、不受平臺UI限制;缺點是內(nèi)存占用較高、與平臺UI混排復雜度高。

6.3 適用場景對比

根據(jù)不同的技術特點,Kuikly和ovCompose有各自適合的應用場景:

Kuikly更適合以下場景:

  • 需要動態(tài)化能力的應用,特別是頁面級動態(tài)更新需求
  • 追求最小內(nèi)存占用最佳性能的應用
  • 需要與平臺原生UI深度集成的項目
  • 需要支持Web和小程序等多端的項目

ovCompose更適合以下場景:

  • 要求極高UI一致性 across all platforms的應用
  • 已有Compose代碼基礎,需要擴展到iOS和鴻蒙的平臺
  • UI設計較為復雜,需要充分利用Compose強大布局能力的項目
  • 不需要支持Web和小程序的純移動端項目

6.4 性能表現(xiàn)對比

在性能方面,Kuikly和ovCompose各有優(yōu)勢:

  • 啟動速度:Kuikly因使用原生控件,啟動速度略優(yōu)于ovCompose
  • 內(nèi)存占用:Kuikly的內(nèi)存占用通常低于ovCompose,特別是在低端設備上
  • 渲染一致性:ovCompose的Skia自繪方案在所有平臺上提供像素級一致的渲染效果
  • 混排能力:Kuikly與平臺原生UI混排更簡單自然,ovCompose需要通過三明治鏤空結構實現(xiàn)混排

6.5 開發(fā)體驗對比

從開發(fā)體驗角度來看,兩個框架也有所不同:

Kuikly提供兩種UI開發(fā)范式:自研DSL和Compose DSL。自研DSL針對跨平臺優(yōu)化,學習曲線較平緩;Compose DSL則對已有Compose經(jīng)驗的開發(fā)者更友好。

ovCompose完全兼容JetBrains Compose Multiplatform,對于已有Compose經(jīng)驗的開發(fā)者可以幾乎零學習成本上手,但對于新手需要學習Compose的概念和模式。

7 總結與展望

Kuikly作為騰訊開源的跨端開發(fā)框架,憑借其一碼多端原生性能動態(tài)化支持等特性,為多平臺應用開發(fā)提供了高效的解決方案。通過與KuiklyBase基礎設施的配合,Kuikly既可以全面跨端開發(fā)新應用,也可以逐步遷移現(xiàn)有項目。

與ovCompose相比,Kuikly更適合需要動態(tài)化能力最小內(nèi)存占用原生UI集成的場景,而ovCompose則更適合要求極高UI一致性和已有Compose基礎的項目。

隨著鴻蒙生態(tài)的不斷發(fā)展壯大,Kuikly的意義不僅在于為開發(fā)者提供一個多端開發(fā)框架,更在于它降低了鴻蒙應用開發(fā)門檻,促進了鴻蒙生態(tài)的繁榮。未來,隨著Web和小程序平臺的支持開源,Kuikly有望成為真正意義上的全平臺開發(fā)解決方案。

對于技術選型建議,可以根據(jù)項目需求選擇:

  • 需要最大程度復用現(xiàn)有原生代碼或需要動態(tài)化 → 選擇Kuikly
  • 要求像素級UI一致性或已有Compose經(jīng)驗 → 選擇ovCompose
  • 需要支持Web和小程序 → 選擇Kuikly
  • 純移動端應用且追求最佳性能 → 根據(jù)具體情況選擇

無論選擇哪種方案,Kuikly和ovCompose都代表了騰訊在跨端開發(fā)領域的重要貢獻,為開發(fā)者提供了更多的技術選擇和發(fā)展空間。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容