Kir*_*ari 3 mobile desktop kotlin-multiplatform
我使用 Android Studio 和 Kotlin Multiplatform Mobile 插件创建了一个 KMM 项目,它提供对 Android 和 iOS 的支持。
但是,我还希望能够使用相同的代码库和 UI 进行部署以创建桌面应用程序。那可能吗?如果是的话,怎么办?
Kir*_*ari 12
对的,这是可能的。事实上,本教程详细介绍了如何做到这一点,尽管是以一种相当迂回的方式,我花了几天时间才完成:
https://www.kodeco.com/books/kotlin-multiplatform-by-tutorials/v1.0/chapters/1-introduction
因此,我冒昧地创建了一个简短的摘要,介绍如何为桌面/Android/iOS 应用程序创建基本项目设置:
在Android Studio中安装Kotlin Multiplatform Mobile和插件Compose Multiplatform IDE Support
创建一个新Kotlin Multiplatform App项目(在 下Phone and Tablet)
com.domain.project在 中shared/build.gradle.kts的kotlin块中,在 后面android()添加:
jvm("desktop"){
compilations.all {
kotlinOptions.jvmTarget = "11"
}
}
Run Code Online (Sandbox Code Playgroud)
desktop在应用程序的顶层添加一个新文件夹
将一个新文件添加build.gradle.kts到该desktop文件夹中,并填充以下内容:
import org.jetbrains.compose.compose
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
plugins {
kotlin("multiplatform")
id("org.jetbrains.compose") version "1.2.2"
}
group = "com.domain.project"
version = "1.0.0"
kotlin {
jvm {
withJava()
compilations.all {
kotlinOptions.jvmTarget = "11"
}
}
sourceSets {
val jvmMain by getting {
kotlin.srcDirs("src/jvmMain/kotlin")
dependencies {
implementation(compose.desktop.currentOs)
api(compose.runtime)
api(compose.foundation)
api(compose.material)
api(compose.ui)
api(compose.materialIconsExtended)
implementation(project(":shared"))
}
}
}
}
compose.desktop {
application {
mainClass = "MainKt"
nativeDistributions {
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
packageName = "MyProject"
macOS {
bundleID = "com.domain.project"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在顶层,在最后settings.gradle.kts添加include(":desktop")
单击“立即同步”(或File > Sync project with gradle files)
desktop文件夹现在应该被识别为一个模块,由文件夹图标右下角的小方块表示在desktop模块中,创建文件夹链src/jvmMain/kotlin
在刚刚创建的kotlin文件夹中创建 Kotlin 文件Main,并填写如下:
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.Surface
import androidx.compose.ui.Modifier
import androidx.compose.ui.window.Window
import androidx.compose.ui.window.application
import androidx.compose.ui.window.rememberWindowState
import androidx.compose.material.*
fun main() {
application {
val windowState = rememberWindowState()
Window(
onCloseRequest = ::exitApplication,
state = windowState,
title = "My Project"
) {
Surface(modifier = Modifier.fillMaxSize()) {
Text(text = "Welcome to my Project")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Gradle添加具有以下设置的运行配置类型:
创建文件shared/src/desktopMain/kotiln/com.domain.project/Platform.kt,并用以下内容填充它:
package com.domain.project
class DesktopPlatform : Platform {
override val name: String = "Desktop"
}
actual fun getPlatform(): Platform = DesktopPlatform()
Run Code Online (Sandbox Code Playgroud)
您现在应该能够运行桌面应用程序
之后,您可以创建可在 Android 和桌面上运行的共享 Compose 视图。上述教程的第 5 章涵盖:
此外,这是我使用上述步骤创建的项目的基本版本:
https://github.com/KiraResari/ceal-chronicler/releases/tag/basic-android-and-desktop-app
| 归档时间: |
|
| 查看次数: |
2451 次 |
| 最近记录: |