如需在 Android 项目中创建 Kotlin Multiplatform (KMP) 模块,请使用 Kotlin Multiplatform Shared Module 模板,该模板可在 Android Studio Meerkat 和 Android Gradle 插件 8.8.0 版及更高版本中使用。
该模块模板会自动创建一个以 Android 和 iOS 平台为目标平台且配置要求极低的新模块。
设置共享 KMP 模块
如需创建共享 KMP 模块,请按以下步骤操作:
- 依次选择 File > New > New Module
- 在 Templates 面板中选择 Kotlin Multiplatform Shared Module 模板:
![创建新的 KMP 模块](https://developer.android.com/static/kotlin/images/kmp_new_module.png?hl=zh-cn)
该模板中的字段如下:
- Module name - 定义 Gradle 模块名称以及 iOS 框架名称(稍后可以更改)
- 软件包名称 - 定义此模块中文件的软件包名称
- 点击 Finish(完成),并允许 Gradle 与项目同步。系统可能还会提示您将新创建的模块文件添加到源代码控制工具中。
完成后,Android Studio Project View 会显示新的共享模块以及每个平台的源代码集。
![显示新共享模块的项目视图](https://developer.android.com/static/kotlin/images/kmp_project_structure.png?hl=zh-cn)
将共享模块关联到 Android 应用
模块向导不会将新创建的模块添加为任何现有模块的依赖项。接下来,您需要将共享模块关联到现有 Gradle 模块之一,方法与其他 Android 依赖项类似
dependencies {
...
implementation(project(":shared"))
}
启用后,您就可以照常访问代码了。您可以在 Android 应用中访问 androidMain 或 commonMain 中提供的代码。
如需详细了解 Kotlin Multiplatform 项目结构,请参阅 Kotlin Multiplatform 项目结构基础知识
将共享模块设置为 iOS 应用
Swift 无法直接使用 Kotlin 模块,并且需要生成已编译的二进制框架。
Android Studio 中的新模块模板会配置共享模块,以便为每个 iOS 架构生成框架。您可以在共享模块的 build.gradle.kts
文件中找到以下代码:
val xcfName = "sharedKit"
iosX64 {
binaries.framework {
baseName = xcfName
}
}
iosArm64 {
binaries.framework {
baseName = xcfName
}
}
iosSimulatorArm64 {
binaries.framework {
baseName = xcfName
}
}
如需了解如何定义其他架构类型,请参阅分层项目结构。
在 iOS 项目中关联共享库
如需从 iOS 项目访问共享代码,请在编译 Swift 源代码之前添加脚本阶段以生成 Kotlin 框架:
- 在 Android Studio 中右键点击该文件,然后依次选择 Open In 和 Open in Associated Application。这会在 Xcode 中打开 iOS 应用。
![在关联的应用中打开](https://developer.android.com/static/kotlin/images/kmp_open_in.png?hl=zh-cn)
- 在项目导航器中双击项目名称,打开项目设置
![Xcode 项目设置对话框](https://developer.android.com/static/kotlin/images/kmp_xcode_1.png?hl=zh-cn)
- 将默认的运行脚本名称更改为编译 Kotlin 框架,以便更好地了解此阶段的用途。双击 Run Script 标题以对其进行修改。
- 展开“构建”阶段,然后在 Shell 文本字段中输入以下脚本代码:
![添加新的运行脚本 build 阶段](https://developer.android.com/static/kotlin/images/kmp_xcode_runscript.png?hl=zh-cn)
将运行脚本阶段拖到编译源代码阶段之前。
图 6.在编译源代码之前运行脚本构建阶段 在 Xcode 中构建项目,方法是点击 ⌘B 或前往 Product 菜单并选择 Build。
构建成功后,您会看到以下图标。
![Xcode 中显示构建成功](https://developer.android.com/static/kotlin/images/kmp_xcode_success.png?hl=zh-cn)
访问 iOS 应用中的共享代码
如需验证 iOS 应用是否可以成功访问共享模块中的代码,请执行以下操作:
- 在 iOS 项目中,打开以下位置的
ContentView.swift
文件:Sources/View/ContentView.swift
- 在文件顶部添加 import
sharedKit
。 - 修改文本视图,以便在显示的字符串中添加
Platform_iosKt.platform()
信息,如下所示:
此更新会检查 Fruitties 应用能否从共享模块调用 platform()
函数,该函数在 iOS 平台上运行时应返回“iOS”。
![运行 iOS 应用的 Xcode 模拟器](https://developer.android.com/static/kotlin/images/kmp_xcode_sim.png?hl=zh-cn)
其他资源
如果您刚开始接触 KMP 开发,请参阅 官方 KMP 文档,查看更多指南。如果您刚开始接触 iOS 开发,请参阅 Swift 基础文档。