【问题标题】:How to add Desktop Support to Kotlin Multiplatform Mobile Project如何为 Kotlin 多平台移动项目添加桌面支持
【发布时间】:2022-12-22 22:49:43
【问题描述】:

使用带有 Kotlin Multiplatform Mobile 插件的 Android Studio,我创建了一个 KMM 项目,它提供对 Android 和 iOS 的支持。

但是,我也希望能够使用相同的代码库和 UI 来部署以创建桌面应用程序。那可能吗?如果是,怎么办?

【问题讨论】:

    标签: mobile desktop kotlin-multiplatform


    【解决方案1】:

    是的,有可能。事实上,本教程详细介绍了如何执行此操作,尽管是以一种相当迂回的方式,我花了几天时间才完成:

    https://www.kodeco.com/books/kotlin-multiplatform-by-tutorials/v1.0/chapters/1-introduction

    因此,我冒昧地创建了一个简短的摘要,介绍如何为桌面/Android/iOS 应用程序创建基本项目设置:

    1. 在 Android Studio 中安装 Kotlin Multiplatform MobileCompose Multiplatform IDE Support 插件

    2. 新建Kotlin Multiplatform App项目(在Phone and Tablet下)

      • 对于以下几点,我假设项目名称是“我的项目”,包名称是com.domain.project
    3. shared/build.gradle.kts中,在kotlin块中,在android()之后,添加:

      • jvm("desktop"){
            compilations.all {
                kotlinOptions.jvmTarget = "11"
            }
        }
        
    4. 在应用的顶层添加一个新的desktop文件夹

    5. desktop 文件夹中添加一个新文件build.gradle.kts,并填写以下内容:

      • 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"
                    }
                }
            }
        }
        
    6. 在顶层,在 settings.gradle.kts 最后添加 include(":desktop")

    7. 点击“立即同步”(或File > Sync project with gradle files

      • 同步后,desktop 文件夹现在应该被识别为一个模块,由文件夹图标右下角的小方块指示
    8. desktop模块中,创建文件夹链src/jvmMain/kotlin

    9. 在刚刚创建的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")
                    }
                }
            }
        }
        
    10. 使用以下设置添加 Gradle 类型的运行配置:

      • 姓名: “桌面”
      • 跑步: “跑步”
      • 摇篮项目:“项目:桌面”
    11. 创建文件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()
        
    12. 您现在应该能够运行桌面应用程序

      之后,您可以创建共享的 Compose 视图,这些视图将在 Android 和桌面上运行。上述教程的第 5 章涵盖了:

      https://www.kodeco.com/books/kotlin-multiplatform-by-tutorials/v1.0/chapters/5-developing-ui-compose-multiplatform

    【讨论】:

      猜你喜欢
      • 2020-01-02
      • 1970-01-01
      • 2020-09-05
      • 2023-01-27
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      • 2023-01-29
      相关资源
      最近更新 更多