HarmonyOS 鸿蒙跨端开发实践:用 Kuikly 复用 Android/iOS 代码的完整方案

2 阅读3分钟

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

与其他鸿蒙跨端方案的核心区别:

方案语言鸿蒙渲染方式包体积动态化
纯原生 ArkTSArkTSArkUI
FlutterDart自绘引擎较大
React NativeJS/TSJS Bridge较大
KuiklyKotlinArkUI 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 逻辑直接复用
渲染方式ArkUIArkUI 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 布局模型,跨端布局行为一致,无需为鸿蒙单独调整样式。


六、参考资料

如果你也在做鸿蒙适配,欢迎交流~