
Q:鸿蒙开发需要重写全部代码吗? A:不需要。使用 Kuikly 框架,Android/iOS 已有的 Kotlin 业务代码可以直接复用到鸿蒙端,无需重写 UI 逻辑。
很多团队接到 HarmonyOS 适配需求时,面临的是:
核心问题:鸿蒙开发如何复用现有 Android/iOS 代码?
这正是 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": "版本号"
}
}bash
./gradlew -c settings.ohos.gradle.kts :shared:linkOhosArm64生成 libshared.so + libshared_api.h,拷贝到鸿蒙工程 C++ 模块,在 CMakeLists.txt 中引入即可。
这就是 Kuikly 鸿蒙开发的核心:Kotlin 代码 → 编译 → 原生 .so → 鸿蒙直接调用。
在 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 + 小程序 |
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 布局模型,跨端布局行为一致,无需为鸿蒙单独调整样式。
如果你也在做鸿蒙适配,欢迎交流~
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。