前言
Kotlin Multiplatform (KMP) 是 JetBrains 构建的开源技术,允许跨多个平台共享代码,同时保留了原生编程的优势。 支持的平台包括 iOS、Android、Desktop、Web 等。
随着 Kotlin Multiplatform 的日趋稳定,全球各地的开发团队都可以在生产环境中利用它的强大功能。在 5 月的 Google I/O 2024 大会上,Google 宣布正式支持使用 Kotlin Multiplatform 跨 Android 和 iOS 共享业务逻辑。
环境配置
由于我这边不是 MAC 所以没有安装 Xcode 模拟不了 IOS
主要是安装 Android Studio 以及Kotlin Multiplatform plugin 插件
项目创建
JetBrains 官方提供了一个模板生成网址:https://kmp.jetbrains.com/
下载下来用 Android Studio 打开,默认是 Android 结构要改成 Project 结构
然后因为 gradle 仓库的地址国内访问很慢建议改成阿里云镜像
在 gradle/wrapper/gradle-wrapper.properties 中替换 url https://mirrors.aliyun.com/macports/distfiles/gradle/
在外层的 settings.gradle.kts 中增加
maven { url = uri("https://maven.aliyun.com/repository/google") }
maven { url = uri("https://maven.aliyun.com/repository/public") }
项目改造
基于官方 examples 中 todoapp-lite 进行改造
主要代码都在 composeApp 里面,下图红色框出来的区域可以直接从对应位置 copy 过来,蓝色箭头是我们要调整的
拷贝过来的文件会有报错,因为没有引入对应的依赖,所以我们先在 composeApp/build.gradle.kts
文件中引入依赖,在 sourceSets 处增加 androidx-appcompat 和 androidx-core-ktx 两个依赖
然后修改 com.timothy.todoapp.App.kt 文件,去掉模板自带的多余代码,引入 RootContent
package com.timothy.todoapp
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import org.jetbrains.compose.ui.tooling.preview.Preview
@Composable
@Preview
fun App() {
RootContent(Modifier.fillMaxSize())
}
项目运行
安卓 app 运行配置界面
桌面端运行配置界面
安卓和桌面端运行效果图
遇到的问题
启动虚拟机失败,提示需要安装 haxm
首先先去 Settings -> Android SDK -> SDK Tools 里面查看是否安装 Intel x86 Emulator Accelerator (HAXM installer)
如果显示安装了还不行,就去 Android SDK 文件下面找 exe 文件手动安装一下
参考我的目录 D:\Program Files\Android\extras\intel\Hardware_Accelerated_Execution_Manager