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 布局模型,跨端布局行为一致,无需为鸿蒙单独调整样式。
六、参考资料
- 🔗 开源地址:github.com/Tencent-TDS…,鸿蒙接入文档:见仓库 docs/ 目录
- 📖 官方文档:kuikly.tds.qq.com/
如果你也在做鸿蒙适配,欢迎交流~