如何在Compose Multiplatform的:composeApp下创建类似:commonMain的:core模块?
Compose Multiplatform多模块创建与settings.gradle无include语句问题解答
一、创建带commonMain的:composeApp:core模块
由于IDE添加窗口未提供Compose Multiplatform多目标模块选项,可通过手动方式创建:
搭建模块目录结构
在项目根目录的composeApp文件夹下新建core文件夹,然后在core内创建标准Multiplatform源目录:core/src/commonMain/kotlin(跨平台公共代码目录)core/src/androidMain/kotlin(Android平台专属代码目录)core/src/desktopMain/kotlin(桌面平台专属代码目录)
(若需支持iOS等其他平台,可对应添加iosMain等目录)
编写模块构建脚本
在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 } }
- 关联主模块依赖
在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
相关产品推荐
相关产品推荐

