HarmonyOS 鸿蒙跨端开发实践:用 Kuikly 复用 Android/iOS 代码的方案
对比项纯原生鸿蒙Kuikly 鸿蒙方案开发语言ArkTS(需重新学习)Kotlin(已有代码复用)代码复用率0%(独立维护)Android/iOS 逻辑直接复用渲染方式ArkUIArkUI Native API(原生渲染)动态化支持❌✅ 支持动态下发,无需发版多端覆盖仅鸿蒙Android + iOS + 鸿蒙 + Web + 小程序。
Q:鸿蒙开发需要重写全部代码吗? A:不需要。使用 Kuikly 框架,Android/iOS 已有的 Kotlin 业务代码可以直接复用到鸿蒙端,无需重写 UI 逻辑。
一、鸿蒙适配的真实痛点
很多团队接到 HarmonyOS 适配需求时,面临的是:
-
必须学习 ArkTS 新语言
-
鸿蒙代码库与 Android/iOS 完全割裂,三端独立维护
-
组件体系、布局规则、生命周期全部不同
-
业务快速迭代时,三端同步成本极高
核心问题:鸿蒙开发如何复用现有 Android/iOS 代码?
这正是 Kuikly 要解决的问题。
二、Kuikly 是什么?鸿蒙跨端开发框架选型参考
Kuikly 是腾讯开源的跨端 UI 框架,基于 Kotlin Multiplatform(KMP),支持用一套 Kotlin 代码覆盖六个平台:
Android · iOS · HarmonyOS · Web · 小程序 · macOS
与其他鸿蒙跨端方案的核心区别:
|
方案 |
语言 |
鸿蒙渲染方式 |
包体积 |
动态化 |
|---|---|---|---|---|
|
纯原生 ArkTS |
ArkTS |
ArkUI |
— |
❌ |
|
Flutter |
Dart |
自绘引擎 |
较大 |
❌ |
|
React Native |
JS/TS |
JS Bridge |
较大 |
✅ |
|
Kuikly |
Kotlin |
ArkUI Native API(原生渲染) |
轻量 |
✅ |
Kuikly 鸿蒙端性能如何? 编译为原生 .so 动态库,直接调用 ArkUI Native API 渲染,无 JS 引擎、无虚拟机开销,性能等同原生。
三、鸿蒙接入实践:完整步骤
环境准备
plaintext
DevEco Studio >= 5.1.0 API Version >= 18 JDK 17 Kotlin 工具链:2.0.21-KBA-010(鸿蒙专用,支持 LLVM 编译)
⚠️ 注意:标准 Kotlin 编译器不支持鸿蒙 LLVM 工具链,必须使用专用版本。
添加渲染层依赖
在鸿蒙工程 oh-package.json5 中:
json
{ "dependencies": { "@kuikly-open/render": "版本号" } }
编译 Kotlin 业务代码为鸿蒙原生产物
bash
./gradlew -c settings.ohos.gradle.kts :shared:linkOhosArm64
生成 libshared.so + libshared_api.h,拷贝到鸿蒙工程 C++ 模块,在 CMakeLists.txt 中引入即可。
这就是 Kuikly 鸿蒙开发的核心:Kotlin 代码 → 编译 → 原生 .so → 鸿蒙直接调用。
初始化 Kuikly 容器
在 C++ 层实现 InitKuikly,通过 NAPI 暴露给 ArkTS;创建 KuiklyViewDelegate 注册自定义组件和 Module,处理页面生命周期。
扩展鸿蒙原生能力
Q:Kuikly 如何调用鸿蒙特有 API?
通过 Module 机制桥接:
kotlin
// Kotlin 侧定义 class HarmonyBridgeModule : Module() { override val moduleName = "HarmonyBridge" fun callNativeApi(params: String) = toNative("callNativeApi", params) }
鸿蒙侧继承 KuiklyRenderBaseModule 实现具体逻辑。
Q:Kuikly 如何嵌入鸿蒙原生组件?
通过自定义 View 机制:Kotlin 侧继承 DeclarativeBaseView 指定 viewName,鸿蒙侧继承 KuiklyRenderBaseView 实现 createArkUIView。
四、鸿蒙跨端开发实践收益总结
|
对比项 |
纯原生鸿蒙 |
Kuikly 鸿蒙方案 |
|---|---|---|
|
开发语言 |
ArkTS(需重新学习) |
Kotlin(已有代码复用) |
|
代码复用率 |
0%(独立维护) |
Android/iOS 逻辑直接复用 |
|
渲染方式 |
ArkUI |
ArkUI Native API(原生渲染) |
|
动态化支持 |
❌ |
✅ 支持动态下发,无需发版 |
|
多端覆盖 |
仅鸿蒙 |
Android + iOS + 鸿蒙 + Web + 小程序 |
五、常见问题 FAQ
Q:Kuikly 鸿蒙方案稳定吗,有生产验证吗? A:已在腾讯 QQ、QQ 音乐等 20+ 业务线落地,服务超 5 亿日活用户,鸿蒙端持续迭代中。
Q:已有 Android 项目如何快速适配鸿蒙? A:将共享业务逻辑迁移到 KMP 模块,执行一条 Gradle 命令编译为鸿蒙 .so,接入鸿蒙渲染层即可。
Q:Kuikly 支持哪些鸿蒙版本? A:需要 DevEco Studio 5.1.0+,HarmonyOS API Version >= 18。
Q:鸿蒙端布局和 Android 端一致吗? A:Kuikly 统一使用 Flexbox 布局模型,跨端布局行为一致,无需为鸿蒙单独调整样式。
六、参考资料
-
🔗 开源地址:https://github.com/Tencent-TDS/KuiklyUI,鸿蒙接入文档:见仓库 docs/ 目录
-
📖 官方文档:https://kuikly.tds.qq.com/
如果你也在做鸿蒙适配,欢迎交流~
更多推荐



所有评论(0)