You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Compose Multiplatform的:composeApp下创建类似:commonMain的:core模块?

Compose Multiplatform多模块创建与settings.gradle无include语句问题解答

一、创建带commonMain的:composeApp:core模块

由于IDE添加窗口未提供Compose Multiplatform多目标模块选项,可通过手动方式创建:

  1. 搭建模块目录结构
    在项目根目录的composeApp文件夹下新建core文件夹,然后在core内创建标准Multiplatform源目录:

    • core/src/commonMain/kotlin(跨平台公共代码目录)
    • core/src/androidMain/kotlin(Android平台专属代码目录)
    • core/src/desktopMain/kotlin(桌面平台专属代码目录)
      (若需支持iOS等其他平台,可对应添加iosMain等目录)
  2. 编写模块构建脚本
    在core目录下新建build.gradle.kts文件,配置为Compose Multiplatform多目标模块,示例代码如下:

plugins {
    kotlin("multiplatform")
    id("org.jetbrains.compose")
    id("com.android.library")
}

kotlin {
    // 配置目标平台
    androidTarget {
        compilations.all {
            kotlinOptions {
                jvmTarget = "11"
            }
        }
    }
    jvm("desktop")

    sourceSets {
        // 公共源集
        val commonMain by getting {
            dependencies {
                implementation(compose.runtime)
                implementation(compose.foundation)
                implementation(compose.material3)
                // 添加其他公共依赖
            }
        }
        // Android平台源集
        val androidMain by getting {
            dependencies {
                implementation("androidx.core:core-ktx:1.12.0")
            }
        }
        // 桌面平台源集
        val desktopMain by getting {
            dependencies {
                implementation(compose.desktop.currentOs)
            }
        }
    }
}

android {
    namespace = "com.yourproject.core" // 替换为你的项目命名空间
    compileSdk = 34
    defaultConfig {
        minSdk = 21
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_11
        targetCompatibility = JavaVersion.VERSION_11
    }
}
  1. 关联主模块依赖
    在composeApp的build.gradle.kts中,添加对core模块的依赖:
dependencies {
    implementation(project(":composeApp:core"))
    // 保留原有其他依赖
}

二、settings.gradle中无include(':moduleName')语句的原因

这是因为你的项目启用了Gradle自动模块检测功能(Gradle 7.4及以上版本支持):

  • 只要模块目录下存在build.gradle或build.gradle.kts构建脚本,Gradle会自动扫描并将该模块纳入项目,无需手动添加include(":moduleName")。
  • 如果需要手动控制模块纳入,可在settings.gradle.kts中关闭自动检测并手动注册模块:
rootProject.name = "YourProjectName"
// 关闭自动模块检测(可选)
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
// 手动注册core模块
include(":composeApp:core")

内容的提问来源于stack exchange,提问作者Raka M.A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 06:33:19