欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > Kotlin Multiplatform--02:项目结构进阶

Kotlin Multiplatform--02:项目结构进阶

2025/4/26 13:55:25 来源:https://blog.csdn.net/qq_43519779/article/details/147477312  浏览:    关键词:Kotlin Multiplatform--02:项目结构进阶

Kotlin Multiplatform--02:项目结构进阶

    • 引言
    • 正文

引言

        在上一章中,我们对 Kotlin Multiplatform 项目有了基本的了解,已经可以进行开发了。但我们只是使用了系统默认的项目结构。本章介绍了如何进行更复杂的项目结构管理。


正文

        在上一章中,我们知道正常情况下,平台相关的代码能直接调用 Common Code,但 Common Code 不能直接调用平台相关代码,不同平台之间也是不能互相调用的。即如下关系:

        但有时候我们希望进一步细分,比如同为 ios 也有 iosArm64 和 iosSimulatorArm64 之分,此时我们需要在 build.gradle.kts 中的 sourceSets 用到 dependsOn。
        dependsOn 用来连接两个不同的 kotlin source sets,一般是用来连接 Common Code 和平台相关代码。假设现在有两个 kotlin source sets A 和 B,现有表达式 A.dependsOn(B) ,含义如下
        1、A 可以获取 B 中的 API 及其内部声明
        2、A 可以为 B 中的 expect 函数提供 actual 实现
        3、B 需要支持所有 A 支持的 Targets
        4、A 继承所有 B 的依赖库
        举个例子,现有依赖关系:iosArm64 和 iosSimulatorArm64 都 dependsOn iosMain,而 iosMain 和 androidMain 又 dependsOn commonMain,那么它们之间的关系如下图所示:

        上述这些都是系统内置的 sourceSets 其实我们也可以自定义 sourceSets,如下所示:

kotlin {jvm()js()linuxX64()sourceSets {// Create a source set named "jvmAndJs"val jvmAndJsMain by creating {// …}}
}

        我们声明了一个名为 jvmAndJsMain 的自定义 sourceSets,如下图所示:

        现在 jvmAndJsMain 是独立于项目结构树的,我们需要将其加到项目结构树中去:

kotlin {jvm()js()linuxX64()sourceSets {val jvmAndJsMain by creating {// Don't forget to add dependsOn to commonMaindependsOn(commonMain.get())}jvmMain {dependsOn(jvmAndJsMain)}jsMain {dependsOn(jvmAndJsMain)}}
}

        现在项目结构树如下所示:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词