文章
问答
冒泡
KMP的初次尝试

前言

Kotlin Multiplatform (KMP) 是 JetBrains 构建的开源技术,允许跨多个平台共享代码,同时保留了原生编程的优势。 支持的平台包括 iOS、Android、Desktop、Web 等。

随着 Kotlin Multiplatform 的日趋稳定,全球各地的开发团队都可以在生产环境中利用它的强大功能。在 5 月的 Google I/O 2024 大会上,Google 宣布正式支持使用 Kotlin Multiplatform 跨 Android 和 iOS 共享业务逻辑。

环境配置

参考链接:https://www.jetbrains.com/help/kotlin-multiplatform-dev/multiplatform-setup.html#install-the-necessary-tools

由于我这边不是 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())
}

项目运行

项目运行参考:https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-multiplatform-create-first-app.html#run-your-application

安卓 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

Android
kotlin
Compose Multiplatform

关于作者

TimothyC
天不造人上之人,亦不造人下之人
获得点赞
文章被阅读