Kotlin Multiplatform Development Help

创建你的 Compose Multiplatform 应用

在这里,你将学习如何使用Kotlin Multiplatform网页向导和Android Studio创建并运行第一个Compose Multiplatform应用。

通过Compose Multiplatform UI框架,你可以将Kotlin Multiplatform的代码共享能力扩展到应用逻辑之外。只需实现一次用户界面,即可在Compose Multiplatform支持的所有平台上使用。

本教程将构建一个可在Android、iOS、桌面和Web上运行的示例应用。你将使用Compose Multiplatform框架创建用户界面,并学习其基础知识:可组合函数、主题、布局、事件和修饰符。

教程注意事项:

  • 无需具备Compose Multiplatform、Android或iOS的开发经验。建议在开始前先熟悉Kotlin基础知识

  • 完成本教程只需Android Studio。它允许你在Android和桌面上尝试跨平台开发。如需iOS支持,需要配备已安装Xcode的macOS设备(这是iOS开发的通用限制)。

  • 你可以根据兴趣选择特定平台,忽略其他平台。

环境配置

请先阅读Kotlin Multiplatform开发环境配置文章,确保已:

  • 安装Android Studio的Kotlin Multiplatform插件

  • 若需构建iOS应用,至少启动过一次Xcode并接受使用条款

  • 运行Kdoctor检查环境配置问题

以下说明假设你已为目标平台安装所需软件。

使用向导创建项目

  1. 打开Kotlin Multiplatform向导

  2. New project标签页,将项目名称改为"ComposeDemo",项目ID改为"compose.project.demo"

  3. 勾选AndroidDesktopWeb选项

  4. 若使用Mac,同时勾选iOS ,确保Share UI选项已选中

  5. 点击Download按钮并解压生成的压缩包

Kotlin Multiplatform向导

查看项目结构

  1. 启动Android Studio

  2. 在欢迎界面点击Open ,或通过菜单选择File | Open

  3. 导航至解压的"ComposeDemo"文件夹并点击Open

    Android Studio会自动识别包含Gradle构建文件的文件夹并作为新项目打开。若未在向导中选择iOS,则不会出现以"ios"或"apple"开头的文件夹。

  4. 将视图从Android切换至Project以查看完整项目结构:

    选择Project视图

项目包含两个模块:

  • composeApp :包含Android、桌面、iOS和Web应用共享逻辑的Kotlin模块,使用Gradle构建系统

  • iosApp :构建iOS应用的Xcode项目,依赖共享模块作为iOS框架

    Compose Multiplatform项目结构

composeApp模块包含以下源集: androidMaincommonMaindesktopMainiosMainwasmJsMain 。源集是Gradle对逻辑分组文件的概念,每个组有其独立依赖项。在Kotlin Multiplatform中,不同源集可针对不同平台。

commonMain源集使用通用Kotlin代码,平台源集使用各目标平台特定的Kotlin代码。 androidMaindesktopMain使用Kotlin/JVM, iosMain使用Kotlin/Native, wasmJsMain使用Kotlin/Wasm。

共享模块构建为Android库时,通用Kotlin代码被视为Kotlin/JVM;构建为iOS框架时被视为Kotlin/Native;构建为Web应用时被视为Kotlin/Wasm。

通用Kotlin、Kotlin/JVM和Kotlin/Native

建议尽可能将实现编写为通用代码,而非在平台特定源集中重复功能。

composeApp/src/commonMain/kotlin目录中打开App.kt文件,包含实现极简但完整的Compose Multiplatform UI的App()函数:

@Composable @Preview fun App() { MaterialTheme { var showContent by remember { mutableStateOf(false) } Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) { Button(onClick = { showContent = !showContent }) { Text("Click me!") } AnimatedVisibility(showContent) { val greeting = remember { Greeting().greet() } Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) { Image(painterResource(Res.drawable.compose_multiplatform), null) Text("Compose: $greeting") } } } } }

现在在所有支持平台上运行应用。

运行应用

可在Android、iOS、桌面和Web上运行应用,顺序不限,建议从最熟悉的平台开始。

在Android运行

  1. 创建Android虚拟设备

  2. 在运行配置列表选择composeApp

  3. 选择虚拟设备并点击Run

在Android运行Compose Multiplatform应用
Android上的首个Compose Multiplatform应用

在其他Android模拟设备运行

在真实Android设备运行

在iOS运行

  1. 单独启动Xcode完成初始设置(首次启动需接受许可协议)

  2. 在Android Studio运行配置列表选择iosApp并点击Run (若无可用配置,需添加新运行配置

在iOS运行Compose Multiplatform应用
iOS上的首个Compose Multiplatform应用

在新iOS模拟设备运行

  1. 在运行配置列表点击Edit Configurations

  2. 点击**+选择iOS Application**

  3. 命名配置

  4. 选择.xcodeproj文件

  5. Execution target列表选择模拟设备

  6. 点击Run

在真实iOS设备运行

需先设置与Apple ID关联的Team ID。

设置Team ID

通过KDoctor工具或Xcode设置:

  1. 在终端运行:

    kdoctor --team-ids
  2. iosApp/Configuration/Config.xcconfig中指定Team ID

或通过Xcode:

  1. 打开iosApp/iosApp.xcworkspace

  2. 选择iosApp

  3. 进入Signing & Capabilities

  4. Team列表选择团队

运行应用

连接iPhone后,在Android Studio运行对应的iosApp配置。若设备未注册,需先在Xcode中完成注册流程

在桌面运行

创建运行配置:

  1. 选择Run | Edit Configurations

  2. 点击**+选择Gradle**

  3. Tasks and arguments输入:

    composeApp:run
  4. 点击OK

在桌面运行Compose Multiplatform应用
桌面上的首个Compose Multiplatform应用

运行Web应用

创建运行配置:

  1. 选择Run | Edit Configurations

  2. 点击**+选择Gradle**

  3. Tasks and arguments输入:

    wasmJsBrowserRun -t --quiet
  4. 点击OK

运行Compose Multiplatform网页应用

应用将自动在浏览器打开,或手动访问:

http://localhost:8080/
Compose网页应用

下一步

在教程下一部分,你将学习如何实现可组合函数并在各平台启动应用。

进入下一部分

获取帮助

22 四月 2025