欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > kotlin 跨平台 粗略步骤

kotlin 跨平台 粗略步骤

2024/10/24 18:16:42 来源:https://blog.csdn.net/heeheeai/article/details/139902332  浏览:    关键词:kotlin 跨平台 粗略步骤

启用多平台支持

  1. 修改项目的build.gradle.kts
    首先,需要在build.gradle.kts文件中添加多平台插件并启用实验性功能。

    plugins {kotlin("multiplatform") version "1.8.0" // 请使用当前最新版本
    }kotlin {// 设置多平台支持jvm() // 添加 JVM 平台支持ios() // 添加 iOS 平台支持android() // 添加 Android 平台支持// 启用多平台项目的实验性功能experimental {// 启用多平台项目支持multiPlatformProjects()}
    }
    
  2. 创建共享代码模块
    public actual typealias 是 Kotlin 语言中的一个关键字组合,通常出现在 Kotlin Multiplatform 项目中。它用于在不同的平台(如 JVM、JavaScript、Native)上定义公共类型别名。这些类型别名允许跨平台共享代码,同时在每个平台上有特定的实现。

  • public: 这是一个可见性修饰符,表示该类型别名可以在任何地方访问。

  • actual: 这个关键字用于声明平台特定的实际实现。它与 expect 关键字配对使用,后者用于声明平台无关的预期声明。

  • typealias: 这是 Kotlin 中用于创建类型别名的关键字。
    在项目中创建一个共享代码模块,例如shared。这个模块会包含使用expect关键字定义的共享代码。

    // 在 shared/src/commonMain/kotlin 目录下创建代码文件
    // shared/src/commonMain/kotlin/Greeting.kt
    package com.example.shared// 共享代码块:共享代码可以在不同的平台上复用
    expect fun platformName(): Stringfun greeting(): String {return "Hello, ${platformName()}!"
    }
    
  1. 提供平台特定实现
    在相应的平台模块中提供platformName函数的具体实现。

    iOS平台实现:

    // shared/src/iosMain/kotlin/Greeting.kt
    package com.example.sharedactual fun platformName(): String {return "iOS"
    }
    

    Android平台实现:

    // shared/src/androidMain/kotlin/Greeting.kt
    package com.example.sharedactual fun platformName(): String {return "Android"
    }
    
  2. 运行项目
    确保你在main函数中调用了greeting函数,然后运行项目。输出会根据平台不同而有所区别。

    // shared/src/commonMain/kotlin/Main.kt
    package com.example.sharedfun main() {println(greeting())  // 根据平台输出 "Hello, iOS!" 或 "Hello, Android!"
    }
    

项目结构:

.
├── build.gradle.kts
├── shared
│   ├── src
│   │   ├── commonMain
│   │   │   └── kotlin
│   │   │       └── Greeting.kt
│   │   ├── iosMain
│   │   │   └── kotlin
│   │   │       └── Greeting.kt
│   │   └── androidMain
│   │       └── kotlin
│   │           └── Greeting.kt
└── settings.gradle.kts

在Kotlin多平台项目中,commonMainiosMainandroidMain这些名称是约定俗成的命名方式,用于标识不同平台的源码集。它们是Kotlin官方推荐的默认命名方案,但实际上可以根据需要进行自定义。

1. 默认源码集命名

默认情况下,Kotlin多平台项目使用以下源码集命名:

  • commonMain: 存放所有平台共享的代码。
  • iosMain: 存放iOS平台特定的代码。
  • androidMain: 存放Android平台特定的代码。

这些命名在构建工具中有特定的意义,Kotlin编译器会根据这些名称识别和处理对应平台的代码。

2. 自定义源码集名称

如果需要,可以自定义这些源码集的名称,但需要在项目的build.gradle.kts文件中明确指定。

自定义示例

假设想将iosMain重命名为iosSource,可以按以下步骤进行:

kotlin {jvm() // JVM支持ios("iosSource") // 自定义iOS源码集名称为 iosSourceandroid() // Android支持sourceSets {val commonMain by getting {// 配置 commonMain 源码集}val iosSource by getting {// 配置自定义的 iosSource 源码集}val androidMain by getting {// 配置 androidMain 源码集}}
}

项目结构也需要相应调整:

.
├── build.gradle.kts
├── shared
│   ├── src
│   │   ├── commonMain
│   │   │   └── kotlin
│   │   │       └── Greeting.kt
│   │   ├── iosSource // 自定义的iOS源码集目录
│   │   │   └── kotlin
│   │   │       └── Greeting.kt
│   │   └── androidMain
│   │       └── kotlin
│   │           └── Greeting.kt
└── settings.gradle.kts

版权声明:

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

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