当前位置: 首页 > news >正文

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)}}
}

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

相关文章:

  • 【产品经理从0到1】Axure介绍
  • 认识游戏循环
  • Flask + ajax上传文件(一)
  • 数据库数据删除与修改实验
  • 第十届电气、电子和计算机工程研究国际学术研讨会(ISAEECE 2025)
  • 携国家图书馆文创打造AI创意短片,阿里妈妈AIGC能力面向商家开放
  • 中篇:深入剖析 L2CAP 与 ATT 协议模块(约5000字)
  • C++ round 函数笔记 (适用于算法竞赛)
  • Spring Boot实战(三十六)编写单元测试
  • matlab 绘图
  • 手搓雷达图(MATLAB)
  • 网络安全 | F5 WAF 黑白名单配置实践指南
  • ArcGIS Pro跨图层复制粘贴
  • 第十三届蓝桥杯 2022 C/C++组 修剪灌木
  • 抖音的逆向工程获取弹幕(websocket和protobuf解析)
  • 【QT网络】构建简单Udp回显服务器
  • Flutter Dart 循环语句 for while do..while break、continue
  • CGAL 网格内部生成随机点
  • 图论---朴素Prim(稠密图)
  • Linux内核netlink机制 - 连接器(Netlink Connector)
  • 乌方公布矿产协议详情:未提债务义务,包含美再援助条款
  • 光明网评“泉州梦嘉商贸楼不到5年便成危楼”:监管是否尽职尽责?
  • 俄外长:俄将在不损害伙伴关系前提下发展对美关系
  • 东风着陆场做好各项搜救准备,迎接神舟十九号航天员天外归来
  • 举牌超200轮!中铁建7.76亿元竞得北京通州梨园宅地
  • 浙江官宣:五一假期,没电、没气、没油车辆全部免费拖离高速