KMP模块鸿蒙Kotlin/Native适配

大约 2 分钟

KMP模块鸿蒙Kotlin/Native适配

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

其中,kmp-bizshared模块依赖的其他KMP模块,对kmp-biz进行鸿蒙Kotlin/Native适配需要以下步骤:

使用定制化Kotlin版本

Kuikly定制化了特定的Kotlin版本,以支持鸿蒙Kotlin/Native编译。

  1. 添加maven源

maven("https://mirrors.tencent.com/nexus/repository/maven-public/open in new window")

  1. 设置依赖插件的版本

修改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插件open in new window,knoi插件的接入和使用方式参见github仓库readme文档。

注意

如果业务KMP模块使用了knoi插件对鸿蒙平台的相关代码进行互相调用,则该KMP模块与依赖该模块的Kuikly模块均无法动态化。如需要动态化,可通过Kuikly扩展Module的方式解耦调用业务KMP模块产物,详见扩展原生API

上次编辑于: