Kuikly HarmonyOS开发指南:DevEco Studio跨端页面开发全流程详解
【免费下载链接】KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!项目地址: https://gitcode.com/Tencent-TDS/KuiklyUI
Kuikly 是腾讯开源的基于 Kotlin Multiplatform(KMP)的高性能全平台 UI 框架,支持一套代码同时运行在 Android、iOS、HarmonyOS 等多端。本指南带你走通 Kuikly 鸿蒙(HarmonyOS/OHOS)开发全流程:从工程配置、跨端页面编写、so 产物编译,到在 DevEco Studio 中构建、运行与调试鸿蒙 App 🚀
一、为什么用 Kuikly 做鸿蒙跨端开发?
Kuikly 的核心价值在于统一代码库:业务页面写在commonMain中,各端只保留薄薄的一层原生宿主。对于鸿蒙平台,Kuikly 提供了定制版 Kotlin 工具链(2.0.21-KBA-010),将跨端代码编译为鸿蒙可加载的.so产物,再由鸿蒙宿主工程(ArkTS)加载渲染。
整体开发流程如下:
Android Studio(Kuikly 工程)→ 编写跨端页面 → 编译
ohosArm64so 产物 → 同步到鸿蒙宿主工程(ohosApp)→DevEco Studio构建运行 App
官方鸿蒙开发文档可参考:docs/DevGuide/harmony-dev.md
二、环境准备:定制版 Kotlin 工具链
鸿蒙跨端产物需要使用鸿蒙 SDK 的 LLVM 工具链编译,必须使用定制版 Kotlin 版本:
| 配置项 | 值 |
|---|---|
| Kotlin 版本 | 2.0.21-KBA-010(已支持 Windows/Linux 编译) |
| Kuikly 版本 | 带-ohos后缀的版本 |
| 构建目标 | ohosArm64 |
- Windows 环境:需设置环境变量
OHOS_SDK_HOME指向 DevEco Studio 中的 SDK 路径(如D:\Program Files\DevEco Studio\sdk\default\openharmony) - 两种编译链模式:
- 方式一(推荐新手):为鸿蒙单独配置 Gradle 脚本
settings.ohos.gradle.kts,用-c参数指定编译 - 方式二:统一编译链,Android/iOS/Ohos 共用一份
build.gradle.kts,配置更简洁
- 方式一(推荐新手):为鸿蒙单独配置 Gradle 脚本
三、配置 ohosArm64 构建目标
在 Kuikly 工程的 Gradle 脚本中,为 shared 模块添加ohosArm64构建目标,并声明共享库:
kotlin { ohosArm64 { binaries { sharedLib() } } }同时引入带-ohos后缀的 Kuikly SDK 与 KSP 编译器:
implementation("com.tencent.kuikly-open:core:KUIKLY_VERSION-ohos")💡 独立编译链模式下,工程根目录会提供
settings.ohos.gradle.kts,例如本仓库的 settings.2.0.ohos.gradle.kts,源码工程可直接用它编译鸿蒙产物。
四、编写第一个 Kuikly 鸿蒙跨端页面
Kuikly 页面与 Android/iOS 端的写法完全一致,写在commonMain中即可复用;如需平台差异化逻辑,可放入ohosArm64Main源集做平台实现。本仓库中就有鸿蒙专属页面示例:demo/src/ohosArm64Main/
在页面内可以通过以下方式判断当前是否运行在鸿蒙平台:
val isOhos = pagerData.platform === "ohos"页面编写方法可参照官方入门文档 docs/QuickStart/hello-world.md。
五、编译 so 产物并同步到鸿蒙宿主工程
执行 Gradle 任务linkOhosArm64即可生成 so 产物和头文件:
./gradlew -c settings.2.0.ohos.gradle.kts :demo:linkSharedOhosArm64构建成功后,so 产物位于shared/build/bin/ohosArm64/目录,需要与头文件一起同步到鸿蒙宿主工程。Kuikly 提供了Kuikly Hvigor 插件(kuikly-ohos-compile-plugin),在鸿蒙工程运行时自动编译并拷贝 so 与头文件,省去手动操作。
本仓库的鸿蒙宿主工程位于 ohosApp/ 目录,加载渲染页面由KuiklyPageView承载,核心实现见 KuiklyPageView.ets:
export class KuiklyPageView extends KuiklyRenderBaseView { static readonly VIEW_NAME = 'KuiklyPageView' pageName: string = '' pageData: string = '{}' }注意:鸿蒙不支持
assets资源内置打包,跨端资源需拷贝到鸿蒙工程的resfile目录中,同样可借助 Hvigor 插件自动完成。
六、在 DevEco Studio 中构建运行鸿蒙 App
- 用DevEco Studio打开
ohosApp鸿蒙工程; - 选择真机或模拟器,点击Run运行;
- App 启动后,ArkTS 侧通过
KuiklyPageView加载 Kuikly 渲染引擎,展示你在commonMain中编写的跨端页面 🎉
至此,一套 Kotlin 代码就同时跑在了鸿蒙设备上。KMP 组件的鸿蒙适配进阶技巧可参考 docs/Community/kmp_ohos_adaptation_guide.md。
七、DevEco Studio 鸿蒙平台调试
当遇到鸿蒙特有问题时,可以在宿主侧直接调试 Kotlin 跨端代码:
让 DevEco 识别 .kt 文件
Preferences -> Editor -> File Types,在 C code file 类型中添加*.kt条目,即可像普通文件一样打开并设置断点:
设置断点并 Attach 调试进程
将 kt 文件拖入 DevEco 后点击文件行号设置断点,也可以直接在 LLDB 命令窗口用breakpoint set --file foo.kt --line 12设置:
App 已运行时可通过右侧按钮Attach 进程,或在 DevEco 中直接点击 Debug 启动调试。命中断点后可正常查看变量与调用栈:
调试 Kotlin 跨端代码需使用debug 产物;Kotlin 版本为
2.0.21-KBA-010时需加载konan_lldb.py调试脚本。完整调试指引见 docs/DevGuide/ohos-debug.md。
性能分析方面,可使用 DevEco 自带的 Profiler 观察渲染耗时:
八、常见问题速查
| 问题 | 解决方式 |
|---|---|
| 编译报错找不到工具链 | 确认 Kotlin 版本为2.0.21-KBA-010,且添加了定制 Maven 源 |
| Windows 下无法联动编译 Ohos App | 先 Gradle 编译 so 产物并拷贝到 ohosApp,再在 DevEco 中单独构建 |
| ohosArm64Main 无编译提示 | 说明未使用独立编译链模式,可切换为统一工具链或接受多脚本维护 |
| 断点不生效 | 确认使用 debug 产物,并已加载konan_lldb.py脚本 |
小结
Kuikly 的鸿蒙开发链路非常清晰:commonMain 写页面 → ohosArm64 编译 so → Hvigor 插件同步 → DevEco Studio 运行调试。掌握这套流程后,你只需维护一份 Kotlin 代码,即可同时交付 Android、iOS 与 HarmonyOS 三端应用。
更多资料:
- 鸿蒙开发方式:docs/DevGuide/harmony-dev.md
- 鸿蒙调试:docs/DevGuide/ohos-debug.md
- 鸿蒙宿主工程:ohosApp/
- KMP 组件鸿蒙适配:docs/Community/kmp_ohos_adaptation_guide.md
【免费下载链接】KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!项目地址: https://gitcode.com/Tencent-TDS/KuiklyUI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考