Compose Multiplatform添加:feature:learning模块后无法关联求助
解决Compose Multiplatform模块依赖无法关联的问题
1. 检查依赖声明的位置与写法
确保composeApp模块的build.gradle.kts里,依赖是添加在对应sourceSet的依赖块中,而不是随便放在根目录:
// composeApp/build.gradle.kts kotlin { sourceSets { val commonMain by getting { dependencies { implementation(project(":feature:learning")) } } // 若需平台特定依赖,比如安卓端 val androidMain by getting { dependencies { implementation(project(":feature:learning")) } } } }
别只在dependencies {}根块里加,KMM模块依赖必须绑定到对应的sourceSet。
2. 确认feature:learning模块的配置合规
检查该模块的build.gradle.kts是否正确配置为KMM共享模块:
plugins { kotlin("multiplatform") id("com.android.library") kotlin("plugin.compose") } kotlin { androidTarget { compilations.all { kotlinOptions.jvmTarget = "1.8" } } iosX64() iosArm64() iosSimulatorArm64() sourceSets { val commonMain by getting { dependencies { implementation(compose.runtime) implementation(compose.foundation) implementation(compose.material3) } } } } android { compileSdk = 34 defaultConfig { minSdk = 24 } }
如果没正确应用KMM插件或配置目标平台,Gradle不会把它识别为可依赖的共享模块。
3. 强制同步Gradle并清理缓存
- 点击Android Studio右上角的「Sync Project with Gradle Files」按钮,确保依赖同步完成。
- 若同步无效,尝试清理缓存:
- 执行
File > Invalidate Caches... > Invalidate and Restart - 或终端运行:
./gradlew clean build --refresh-dependencies
- 执行
4. 检查代码的访问权限与导入
- 确认
LearningScreen可组合函数的访问修饰符不是private(默认public,除非你手动改了),否则其他模块无法访问。 - 检查composeApp中导入
LearningScreen的包名是否拼写正确,别因为包名写错导致找不到类。
5. 验证settings.gradle.kts的模块配置
打开根目录的settings.gradle.kts,确认已经添加了feature:learning模块:
include(":composeApp") include(":feature:learning") // 这一行必须存在
如果没加这行,Gradle根本不会识别这个模块,自然无法建立依赖关联。
内容的提问来源于stack exchange,提问作者fahrizal89
相关产品推荐
相关产品推荐

