当前位置: 首页 > news >正文

腾讯 ovCompose 跨平台框架发布,几年后还会有人用吗?

目录

前言

一、ovCompose 是什么?它和主流方案有何不同?

二、攻克鸿蒙:这并非简单的"移植"

2.1 第一关:选择正确的技术路线

2.2 第二关:打通编译工具链

2.3 第三关:极致的性能优化

三、解放 iOS:独创的"多模态渲染"

四、KuiklyBase:冰山之下的巨人

总结:这为什么重要?


 🎬 攻城狮7号:个人主页

⛺️ 君子慎独!

 🌈 大家好,欢迎来访我的博客!
⛳️ 此篇文章主要介绍 ovCompose 跨平台框架
⛺️ 欢迎各位 ✔️ 点赞 👍 收藏 ⭐留言 📝!

前言

        近两年来,随着"纯血鸿蒙"的正式登场,国内的移动开发领域迎来了一场新的变局。对于广大的应用程序开发者而言,一个现实而紧迫的问题摆在了面前:除了 Android 和 iOS,现在又多了一个需要适配的主流操作系统。难道我们真的要为三个平台维护三套独立的代码吗?这无疑意味着成本的飙升和效率的骤降。

        跨平台开发,这个存在了多年的技术理想,在这一刻显得比以往任何时候都更加重要。

        就在这样的背景下,2025年6月,腾讯正式开源了其内部孵化已久的 `ovCompose` 跨平台框架。这不仅仅是又一个"轮子"的诞生,而是腾讯这样体量的公司,基于自身海量业务(如腾讯视频、QQ浏览器等)的实践,给出的一份解决"一码多端"难题的、经过实战检验的答卷。

        这篇文章将为你深入剖析 `ovCompose` 和它背后的"基石"——`KuiklyBase`。我们将用最通俗的语言,带你了解它究竟是什么,解决了哪些其他框架没能解决的痛点,以及它对整个开发生态意味着什么。

一、ovCompose 是什么?它和主流方案有何不同?

        要理解 `ovCompose`,我们首先需要知道它站在谁的"肩膀"上。它的技术底座是 JetBrains 公司推出的 `Compose Multiplatform`(简称 CMP)。

        `Compose Multiplatform` 本身是一个非常优秀的跨平台 UI 框架,它允许开发者使用 Google 官方推荐的 Kotlin 语言和现代化的声明式 UI 范式(就像搭积木一样描述界面),来为 Android、iOS、桌面端甚至 Web 端编写代码。它的核心优势在于,使用 Google 的 Skia 图形引擎进行"自渲染",这意味着你的应用界面在所有平台上看起来和运行起来几乎一模一样,避免了大量的平台差异适配工作。

        然而,官方的 `Compose Multiplatform` 并非完美,它存在两个关键的"短板":

        (1)不支持鸿蒙:这是最致命的一点。在鸿蒙系统快速发展的今天,缺少对鸿蒙的支持,意味着它无法成为国内开发者"一码通吃"的终极方案。

        (2)iOS 平台"混排"能力受限: 在 iOS 上,官方的 CMP 方案就像一个独立的"黑盒子"。你很难将 Compose 编写的界面和 iOS 原生的 `UIKit` 界面(比如一个原生按钮或地图)完美地融合在一起。这对于那些希望将现有庞大原生 App 逐步迁移到跨平台框架的团队来说,几乎是不可接受的。

        `ovCompose` 的诞生,正是为了精准地补上这两个短板。

        你可以把 `ovCompose` 理解为 `Compose Multiplatform` 的一个"腾讯魔改增强版"。它的核心目标非常明确:

        (1)加上对鸿蒙的支持,让"一码三端(Android/iOS/鸿蒙)"成为可能。

        (2)解决 iOS 上的混排难题,让 Compose 界面能和原生 `UIKit` 界面灵活、高性能地共存。

二、攻克鸿蒙:这并非简单的"移植"

        让一套复杂的框架支持一个全新的操作系统,绝不是动动手指那么简单。腾讯视频团队在将 Kotlin/Compose 生态带到鸿蒙平台的过程中,面临着巨大的技术挑战。

2.1 第一关:选择正确的技术路线

要把 Kotlin 代码跑在鸿蒙上,理论上有两条路可选:

        (1)JS 方案:将 Kotlin 代码编译成 JavaScript,然后通过鸿蒙的 ArkTS 引擎来运行。

        (2)Native 方案:直接将 Kotlin 代码编译成鸿蒙平台可以识别的本地机器码,即 `Kotlin/Native`(简称 KN)方案。

        经过性能对比,团队发现 Native 方案的执行速度远超 JS 方案,并且能更好地保证三端逻辑的一致性。因此,他们毅然选择了更难但性能更好的 Native 路线。

2.2 第二关:打通编译工具链

        选择了 Native 路线,一个更棘手的问题出现了:Kotlin 编译所依赖的底层工具链(LLVM)版本,和鸿蒙系统所支持的版本不兼容。这就好比你有一个德标的插头,却要插在一个国标的插座上,完全对不上。

        常规的解决方案是为鸿蒙平台维护一个独立的、魔改过的 Kotlin 编译器版本,但这会导致项目分裂,开发和维护成本极高。

        而 `ovCompose` 背后的 `KuiklyBase` 基础设施,采用了一种非常巧妙的"两步走"策略

        (1)在第一阶段,先用苹果兼容的 LLVM 工具链将 Kotlin 代码转换成一种中间语言(LLVM IR)。

        (2)在第二阶段,再用鸿蒙的 LLVM 工具链将这个中间语言编译成最终的可执行文件。

        通过这种方式,既绕开了版本不兼容的问题,又无需对 Kotlin 编译器本身进行伤筋动骨的修改,堪称一次"神来之笔"。

2.3 第三关:极致的性能优化

        即便代码成功跑起来了,新的问题又来了——性能太差。在早期的版本中,同样的代码在鸿蒙设备上的运行耗时竟然是同性能 iOS 设备的 2.48 倍,卡顿现象非常严重。

        为此,团队进行了一系列堪称"地狱级"的性能优化,包括:

(1)修复内联瓶颈:通过深入分析编译过程,修复了导致关键函数无法"内联"(一种重要的编译器优化手段)的问题。

(2)优化线程数据访问:发现鸿蒙系统底层对 `ThreadLocal`(一种高频访问的线程数据)的实现性能不佳,通过编译参数强制其使用更高性能的硬件实现,整体性能提升了 30%。

(3)优化协程调度:Compose 的流畅度高度依赖协程,而协程的调度又与异常处理机制挂钩。团队发现异常处理在鸿蒙上会触发系统日志库,造成大量延迟。通过与鸿蒙专家合作,剥离了不必要的日志捕获,并优化了异常处理本身,最终让长列表滑动达到了 120Hz 的流畅标准。

        正是这些深入到骨髓的优化,才让 `ovCompose` 在鸿蒙平台上获得了接近原生的性能体验。

三、解放 iOS:独创的"多模态渲染"

        解决了鸿蒙的问题,`ovCompose` 的另一个杀手锏,是它为 iOS 平台量身打造的"多模态渲染"方案。

        前面提到,官方的 CMP 在 iOS 上渲染,就像是在屏幕上盖了一块独立的"画板",这块画板上的内容很精美,但它和画板外的原生世界(UIKit)几乎无法互动。

        为了解决这个问题,`ovCompose` 在保留官方 Skia 渲染方案的基础上,自研了一套基于 `UIKit` 的指令映射渲染方案

        这是什么意思呢?

        (1)官方 Skia 渲染(模式一):优点是三端表现绝对一致,适合从零开始的全 Compose 项目。

        (2)自研 UIKit 渲染(模式二):它不再自己画,而是把 Compose 的"绘制指令"(比如"在这里画一个圆角矩形"、"在这里写一行文字")巧妙地"翻译"成苹果 `UIKit` 自己的绘制指令,并交由系统去渲染。

        这种做法的好处是巨大的。因为它本质上已经是原生渲染的一部分,所以可以和任何 `UIKit` 组件无缝、高性能地混合在一起,无论是你想在 Compose 列表里嵌入一个原生视频播放器,还是在原生页面上弹出一个 Compose 对话框,都变得轻而易举。

        更棒的是,开发者可以根据业务场景,在同一个 App 里自由选择使用哪种渲染模式,甚至让它们在运行时共存。这种灵活性,对于那些需要逐步将庞大存量业务迁移到新技术栈的团队来说,是至关重要的生命线。

四、KuiklyBase:冰山之下的巨人

        如果说 `ovCompose` 是我们能看到的、漂浮在海面上的亮丽冰山,那么 `KuiklyBase` 就是支撑着这一切的、隐藏在水下的庞大基座。

        `KuiklyBase` 是腾讯为 `Kotlin Multiplatform` 开发提供的一整套跨平台基础能力组件。它不仅服务于 `ovCompose`,也服务于腾讯内部其他的跨平台框架。它就像一个强大的"工具箱"和"脚手架",几乎涵盖了日常开发所需的一切:

(1)基础能力库:封装了协程、序列化、日期时间、IO、网络请求、数据库(SQLite)等跨平台开发必备的基础库。

(2)组件生态:提供了 Lottie/PAG 动画、原子操作、并发集合等常用组件的跨平台实现。

(3)平台差异抹平:提供了一个强大的工具库,可以让你用一套统一的 API 来获取设备信息、管理电池状态、监听网络、读写文件等,无需再为每个平台单独编写适配代码。

(4)开发体验优化:

        堆栈还原:解决了 `Kotlin/Native` 代码崩溃后,错误堆栈信息不清晰、难以定位问题(无法对应到 Kotlin 源码行号)的痛点。

        内存优化:提供了更智能的 GC(垃圾回收)抑制和分段执行机制,以及一个几乎"无感"的、不会冻结 App 界面的高性能内存快照(Dump)工具,极大地便利了内存泄漏排查。

        鸿蒙互操作:提供了 `Kotlin/Native` 与鸿蒙 `ArkTS` 之间互相调用的解决方案。

        可以说,正是有了 `KuiklyBase` 这个坚实的底座,`ovCompose` 才能将精力更专注于解决渲染和性能这两个核心问题上。

总结:这为什么重要?

        腾讯 `ovCompose` 的开源,其意义远不止于为社区贡献了一个新工具。

        (1)为鸿蒙生态提供了"最优解"之一:它为广大 Kotlin 开发者打通了一条通往鸿蒙世界的高性能、高效率之路。对于许多已经在使用或熟悉 Compose 的团队来说,这可能是目前适配鸿蒙成本最低、体验最好的方案。

        (2)验证了 KMP 技术的生产可行性:像腾讯这样体量的公司,在超过10款核心 App 上大规模落地并开源自己的 KMP 解决方案,这本身就是对 `Kotlin Multiplatform` 技术路线的一次强有力的背书。它告诉整个行业,KMP 已经足够成熟,可以承载亿万级用户的复杂业务场景。

        (3)解决了业界的真痛点:它没有停留在做一个"玩具"或单纯的技术演示,而是精准地切入了官方方案在鸿蒙支持和 iOS 混排上的核心痛点,并给出了经过实战检验的、优雅的解决方案。

        当然,`ovCompose` 也并非银弹,它和所有跨平台框架一样,依然有自己的适用场景和持续需要优化的方向(比如 GC 性能、组件化等)。但它的出现,无疑为深陷多平台适配泥潭的开发者们,点亮了一盏明亮的灯塔。它让我们看到,一个真正高效、统一、高性能的"大前端"时代,或许正加速向我们走来。

看到这里了还不给博主点一个:
⛳️ 点赞☀️收藏 ⭐️ 关注

💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖
再次感谢大家的支持!
你们的点赞就是博主更新最大的动力!

相关文章:

  • SSM spring Bean实例化
  • matlab 2024a ​工具箱Aerospsce Toolbox报错​
  • 【力扣链表篇】19.删除链表的倒数第N个节点
  • 2025年06月07日Github流行趋势
  • Vue3 项目的基本架构解读
  • 2012-2023年 上市公司-知识重组创造、知识重组再利用数据-社科经管实证数据
  • 《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析LLP (二)
  • 备份还原打印机驱动
  • 数据库管理与高可用-MySQL高可用
  • Java基于SpringBoot的校园闲置物品交易系统,附源码+文档说明
  • 以智能管理为基础,楼宇自控打造建筑碳中和新路径
  • WebFuture 系统升级提示外键约束的问题处理
  • WebWorker-----高频面试题(浏览器篇)
  • 30、memory-order-relaxed
  • 从零开始开发纯血鸿蒙应用之网络检测
  • A Execllent Software Project Review and Solutions
  • 【物联网-ModBus-RTU
  • 【Go语言基础【14】】defer与异常处理(panic、recover)
  • 【HarmonyOS 5】拍摄美化开发实践介绍以及详细案例
  • 关于datetime获取时间的问题
  • 外贸都用什么网站/广告公司取名字参考大全
  • 湖南平台网站建设哪里好/长春网站建设技术托管
  • wordpress开发工作流/比较好的网络优化公司
  • wordpress的论坛主题/奶糖 seo 博客
  • skype在网站上怎么做链接/域名查询大全
  • 常州网站建设开发/世界500强企业排名