KMP模块鸿蒙Kotlin/Native适配
KMP模块鸿蒙Kotlin/Native适配
在Kuikly工程中,可能会需要集成本地其他KMP模块。目前官方的KMP模块还不支持编译到鸿蒙平台,为了使Kuikly工程在集成其他KMP模块后仍能编译到鸿蒙平台,需要对KMP模块进行鸿蒙Kotlin/Native的适配。现假设你的Kuikly工程目录如下:

其中,kmp-biz
是shared
模块依赖的其他KMP模块,对kmp-biz
进行鸿蒙Kotlin/Native适配需要以下步骤:
使用定制化Kotlin版本
Kuikly定制化了特定的Kotlin版本,以支持鸿蒙Kotlin/Native编译。
- 添加maven源
maven("https://mirrors.tencent.com/nexus/repository/maven-public/")
- 设置依赖插件的版本
修改kmp-biz
模块的build.gradle.kts
,将kotlin("multiplatform")
插件的版本设为2.0.21-KBA-004
plugins {
kotlin("multiplatform").version("2.0.21-KBA-004")
...
}
配置鸿蒙平台Target
配置ohosArm64编译目标
在KMP模块的build.gradle.kts
中加入鸿蒙平台ohosArm64
编译目标

注意
如果业务KMP模块只作为子模块被依赖的话,只需要添加ohosArm64()
即可。如果业务KMP模块需要单独打包成so产物接入到鸿蒙工程,则需要在ohosArm64
中加上binaries.sharedLib()
,之后即可单独为该KMP模块打包so产物和头文件,打包方式见生成so产物和头文件
添加鸿蒙平台目录ohosArm64Main
多平台函数expect fun
同样需要在鸿蒙平台实现,因此需要在KMP模块中添加平台目录ohosArm64Main
,实现鸿蒙平台的actual fun
。

配置依赖关系
如果ohosArm64Main有其他依赖,需要在KMP模块build.gradle.kts
文件中的sourceSets
中配置

注意
完成以上配置后,如果在工程sync的时候报错,可以尝试注释掉其他平台的target,单独sync鸿蒙平台。
开发KMP鸿蒙平台代码
完成以上配置后,即可在业务KMP模块进行鸿蒙平台相关开发与集成。如果业务在KMP模块开发过程中需要对鸿蒙平台的相关代码进行互相调用,可以使用knoi插件,knoi插件的接入和使用方式参见github仓库readme文档。
注意
如果业务KMP模块使用了knoi插件对鸿蒙平台的相关代码进行互相调用,则该KMP模块与依赖该模块的Kuikly模块均无法动态化。如需要动态化,可通过Kuikly扩展Module的方式解耦调用业务KMP模块产物,详见扩展原生API