Kuikly 是什么?和KMP有什么关系?
Kuikly 是腾讯开源的 Kotlin Multiplatform 跨端框架。它处理的不是单纯的业务逻辑复用而是把 UI、布局、事件、Bridge 和部分业务逻辑都放到 KMP 工程里再分别编译到 Android、iOS、鸿蒙、Web、小程序和 macOS。它解决什么问题Android 开发看跨平台框架时通常会先问两个问题一份代码能不能跑到多个平台跑起来以后是不是还能保留接近原生的体验。Kuikly 的设计比较明确它用 Kotlin Multiplatform 写跨端业务再用各个平台自己的 Render 层做真正的 UI 渲染。它的工程里有两个核心概念KuiklyCore和KuiklyRender。KuiklyCore负责跨平台的声明式 UI、响应式更新、布局算法和 Bridge 通信KuiklyRender负责把 Core 声明出来的控件渲染到具体平台上。Android 上是 Android 渲染器iOS 上是 iOS 渲染器鸿蒙、Web、小程序也都有对应实现。这和很多“写一套 UI然后用统一引擎画出来”的方案不太一样。Kuikly 更接近一套跨端 UI 协议业务代码在 KMP 侧声明页面结构和状态变化平台侧提供承载容器、生命周期、图片、日志、路由、线程等适配能力。从开源仓库看Kuikly 目前支持 Android、iOS、HarmonyOS、Web、小程序和 macOS。其中 Web、小程序还标注为 betamacOS 是 Alpha。系统要求里 Android 是 5.0iOS 是 12.0HarmonyOS Next 是 5.0.0(12)。这些版本信息决定了它不是只面向新项目老 Android 设备也在覆盖范围里。README 里还有一个信息比较具体AOT 模式下 Android SDK 增量大约 300 KBiOS 大约 1.2 MB。这个数字不能直接等同于业务最终包体积因为还要看具体页面、资源、依赖和平台接入方式但至少说明它没有把一个很重的通用渲染引擎塞进宿主。工程结构Kuikly 的源码结构能看出它的分层。core是跨平台模块里面有commonMain、androidMain、jvmMain、appleMain、ohosArm64Main、jsMain。这些目录对应 KMP 的不同 target最终产物也不同Android 是.aariOS 和 macOS 是.framework鸿蒙是.soWeb 和小程序是 JS 相关产物。平台渲染层拆成了core-render-android、core-render-ios、core-render-ohos、core-render-web。业务页面用到的Page注解在core-annotations注解处理在core-ksp。这也解释了为什么写页面时要给页面加Page(xxx)因为运行时需要通过页面名创建对应页面。官方示例里的最小页面大概是这样Page(HelloWorld)internal class HelloWorldPage:Pager(){override fun body(): ViewBuilder{return{attr{allCenter()}Text{attr{text(Hello Kuikly)fontSize(14f)}}}}}这段代码里有三个点。Pager是 Kuikly 页面的基础类body()返回页面内容Page(HelloWorld)把这个页面注册成运行时可打开的页面名。Android 壳工程里输入或传入HelloWorld就能打开这个页面。如果只看这段代码它和 Compose 的声明式写法有一点像但它不是直接使用androidx.compose包。Kuikly 仓库里有一个compose目录里面基于 Jetpack Compose 1.7.3 做了适配并把包名从androidx.compose改成了com.tencent.kuikly.compose用于支持 Kuikly 自己的渲染需求。这一点很关键不能把它简单理解成“官方 Compose Multiplatform 原样接进来”。创建项目新项目的入口在 Android Studio 插件。文档里的路径是File -New -New Project -Kuikly Project Template创建后会生成 KMP 业务工程和各端壳工程。常见目录包括shared、androidApp、iosApp、ohosApp、h5App、miniApp等。业务页面通常先写在shared/src/commonMain/kotlin/...下然后通过各端壳工程运行。第一次体验可以先跑 Android。创建工程、完成 Gradle sync 后直接选择androidApp运行。iOS 需要先进入iosApp执行podinstall--repo-updateH5 的调试路径也比较具体。先启动 dev server再构建 JS Bundle最后在浏览器访问本地页面npmrun serve ./gradlew :shared:packLocalJsBundleDebug ./gradlew :h5App:jsBrowserRun-t./gradlew :h5App:copyAssetsToWebpackDevServer如果 Kotlin 版本在 2.0 以上H5 运行命令换成./gradlew :h5App:jsBrowserDevelopmentRun-t小程序侧也是先把业务代码编译成 JS然后用微信开发者工具打开生成目录。Debug 构建常见命令是./gradlew :shared:packLocalJsBundleDebug ./gradlew :miniApp:jsMiniAppDevelopmentWebpack这些命令说明 Kuikly 的“多端”不是只在 IDE 里点一个按钮。Android、iOS、鸿蒙、H5、小程序都有自己的壳工程和工具链。KMP 侧页面可以共用但平台侧的工程配置、签名、调试方式仍然要按平台处理。接入 Android如果不是新项目而是要把 Kuikly 接到已有 Android 工程里就要分成两件事KMP 侧接入KuiklyCoreAndroid 宿主侧接入KuiklyRender。Android 宿主模块里需要加渲染器依赖。文档里的写法是repositories{maven(https://mirrors.tencent.com/repository/maven-tencent/)}dependencies{implementation(com.tencent.kuikly-open:core-render-android:KUIKLY_RENDER_VERSION)implementation(com.tencent.kuikly-open:core:KUIKLY_CORE_VERSION)implementation(androidx.core:core-ktx:1.7.0)implementation(androidx.appcompat:appcompat:1.6.1)implementation(com.google.android.material:material:1.8.0)implementation(androidx.constraintlayout:constraintlayout:2.1.3)}这里有一个容易踩的点core-render-android和core的 Kuikly 版本要和 KMP 跨端工程保持一致。2.5.0 以后还要补腾讯 Maven 源。版本不一致时问题可能不是编译期直接报错而是运行时的页面创建、Bridge 或组件行为不一致。宿主 App 还要提供承载容器。文档示例里是KuiklyRenderActivity里面创建ContextCodeHandler拿到KuiklyRenderViewBaseDelegator然后调用openPage()把 Kuikly 页面挂到一个ViewGroup里。生命周期也要转发给 delegatoronResume()、onPause()、onDetach()。精简后可以理解成下面这个结构class KuiklyRenderActivity:AppCompatActivity(){private lateinit var delegator: KuiklyRenderViewBaseDelegator private lateinit var contextCodeHandler: ContextCodeHandler private lateinit var container: ViewGroup override fun onCreate(savedInstanceState: Bundle?){super.onCreate(savedInstanceState)contextCodeHandlerContextCodeHandler(pageName)delegatorcontextCodeHandler.initContextHandler()containerfindViewById(R.id.hr_container)contextCodeHandler.openPage(this, container, pageName, createPageData())}override funonResume(){super.onResume()delegator.onResume()}override funonPause(){super.onPause()delegator.onPause()}override funonDestroy(){super.onDestroy()delegator.onDetach()}}然后还要实现平台适配器。必需项包括图片适配器、日志适配器、异常适配器、页面路由适配器和线程适配器。图片加载用宿主已有图片库日志和异常接入现有监控路由接入 App 内跳转体系线程适配接入 Android 主线程和后台线程。这也是 Kuikly 和纯 UI 库的区别。它不是加一个 View 就结束真正接进业务工程时页面生命周期、路由、图片、异常、线程都要和宿主对齐。和其他跨平台Android 开发常见的跨平台方案大概有几类Flutter、React Native、Compose Multiplatform、KMP 逻辑复用以及 Kuikly。Flutter 用 Dart 和自己的渲染体系UI 一致性强生态成熟但原生团队要接受独立技术栈和 Flutter Engine。React Native 用 JS/TS 写业务通过 Bridge 或新架构接平台能力前端团队接起来更自然但 Android 原生团队要处理 JS 运行时、包管理和平台交互边界。Compose Multiplatform 用 Kotlin 和 Compose 写 UIAndroid 开发者上手成本低Desktop 和 iOS 也在持续推进。它更接近 JetBrains/Compose 生态本身适合想沿着 Compose 技术线做多端 UI 的团队。Kuikly 的特殊点在几个地方。第一它基于 KMP但目标不止逻辑复用而是 UI 逻辑一起跨端。第二它有自研 DSL也有基于 Compose 适配的 Compose DSL。第三它把 Core 和 Render 分开平台侧仍然要接入对应渲染器和适配器。第四它强调动态化产物这对大 App 的页面灰度、模块分发会更有吸引力。所以判断 Kuikly 不能只看“是不是 Kotlin 写 UI”。如果团队已经是 Kotlin/Android 背景希望一部分页面跑到 iOS、鸿蒙、H5、小程序同时又不想把业务完全迁到 Dart 或 JSKuikly 的路线更贴近这种诉求。如果团队本来就是 Flutter 或 RN 技术栈或者只需要 Android/iOS 两端统一 UI它未必是最低成本选择。最后Kuikly 可以理解成一套基于 Kotlin Multiplatform 的跨端 UI 框架KMP 侧写页面和逻辑平台侧用 Render 承载和渲染再通过适配器接入宿主能力。它和 Flutter、RN、Compose Multiplatform 的差异主要在技术栈、渲染方式、平台覆盖和动态化能力。Android 开发者要试它先从一个Page页面、一个 Android 容器、几项必需适配器开始别一上来就改主框架。[#Android](javascript: [#KotlinMultiplatform](javascript: [#Kuikly](javascript: [#跨平台](javascript:

相关新闻

【AI】loop工程

【AI】loop工程

长任务闭环本质上就是"Loop工程",但更准确地说,它是**“有状态管理的Loop工程”**。一、Loop工程的核心定义 Loop工程 观察(Observation) → 决策(Decision) → 行动(Action) → 验证(Verification) → 循环┌───────────────…

2026/7/7 8:48:23 阅读更多 →
抖音监控助手:如何轻松实现24小时自动追踪心仪博主动态

抖音监控助手:如何轻松实现24小时自动追踪心仪博主动态

抖音监控助手:如何轻松实现24小时自动追踪心仪博主动态 【免费下载链接】douyin_dynamic_push 【抖音】视频动态、直播间开播检测与推送 项目地址: https://gitcode.com/gh_mirrors/do/douyin_dynamic_push 还在为错过抖音博主的精彩直播和最新视频而烦恼吗&…

2026/7/7 8:46:21 阅读更多 →
AI期刊论文写作工具哪个好?5款主流平台实测对比

AI期刊论文写作工具哪个好?5款主流平台实测对比

撰写期刊论文时,最让人头疼的往往不是观点提炼,而是参考文献格式调校和期刊等级适配。大量时间花在调整GB/T 7714标点、空格、作者名顺序上,一稿多投还要反复改字数与摘要结构。 如果需要一个能面向核心期刊投稿、自动规范格式的AI写作助手&…

2026/7/7 8:46:21 阅读更多 →

最新新闻

如何高效获取Bilibili完整评论数据?专业爬虫工具实战指南

如何高效获取Bilibili完整评论数据?专业爬虫工具实战指南

如何高效获取Bilibili完整评论数据?专业爬虫工具实战指南 【免费下载链接】BilibiliCommentScraper B站视频评论爬虫 Bilibili完整爬取评论数据,包括一级评论、二级评论、昵称、用户ID、发布时间、点赞数 项目地址: https://gitcode.com/gh_mirrors/bi…

2026/7/7 9:42:33 阅读更多 →
AI内衣换装系统私有化部署:从技术架构到工程实践

AI内衣换装系统私有化部署:从技术架构到工程实践

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 在服装电商、虚拟试衣和个性化定制领域,AI驱动的内衣换装技术正从云端服务走向本地私有化部署。企业选择私有化部署的核心…

2026/7/7 9:40:33 阅读更多 →
好用的平衡机源头厂家

好用的平衡机源头厂家

前阵子跟浙江宁波做风机生产的王总喝茶,他说起去年买平衡机的遭遇还肉疼:当时图便宜找了个小厂家,花12万买的圈带传动平衡机,用了不到3个月就出问题,测出来的平衡数据误差最高到3.2g,发出去的风机因为震动大…

2026/7/7 9:40:33 阅读更多 →
如何彻底解决Windows软件兼容性问题:VisualCppRedist AIO终极指南

如何彻底解决Windows软件兼容性问题:VisualCppRedist AIO终极指南

如何彻底解决Windows软件兼容性问题:VisualCppRedist AIO终极指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否遇到过打开软件时弹出"…

2026/7/7 9:40:33 阅读更多 →
DDrawCompat:DirectX 1-7兼容层的架构解析与实现原理

DDrawCompat:DirectX 1-7兼容层的架构解析与实现原理

DDrawCompat:DirectX 1-7兼容层的架构解析与实现原理 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/DDrawCo…

2026/7/7 9:34:32 阅读更多 →
Visual C++运行库10分钟终极修复指南:告别DLL错误的一键解决方案

Visual C++运行库10分钟终极修复指南:告别DLL错误的一键解决方案

Visual C运行库10分钟终极修复指南:告别DLL错误的一键解决方案 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否经常遇到软件启动失败、游戏闪退…

2026/7/7 9:34:32 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻