Compose Multiplatform添加Moko Resources依赖遇metadataCompilationApi错误
解决Compose Multiplatform添加Moko Resources时的
metadataCompilationApi错误 这个报错的核心原因是:metadataCompilationApi是Gradle为Kotlin多平台项目提供的仅可扩展、不可直接解析的内部依赖配置,你在声明Moko Resources依赖时错误地直接引用了它,或者依赖配置写法不符合Moko插件的要求。以下是具体修复步骤:
1. 修正模块build.gradle.kts的依赖与插件配置
首先确保已正确引入Moko Resources插件,并在common源码集中使用标准可解析配置(api/implementation)声明依赖:
plugins { kotlin("multiplatform") id("org.jetbrains.compose") id("dev.icerock.mobile.multiplatform-resources") // 必须添加该插件 } kotlin { // 保留你的Android、iOS等目标平台配置 sourceSets { val commonMain by getting { dependencies { // 核心Moko Resources依赖 api(libs.moko.resources) // 若使用Compose集成,添加此依赖 api(libs.moko.resources.compose) } } // 其他源码集(如androidMain、iosMain)配置保持不变 } } // 配置Moko Resources基础参数(替换为你的项目包名) multiplatformResources { multiplatformResourcesPackage = "com.your.app.package" }
2. 确保libs.version.toml的版本配置正确
在版本目录文件中添加或修正Moko Resources的版本声明:
[versions] # 使用最新稳定版,可按需调整 moko-resources = "0.23.0" [libraries] moko-resources = { module = "dev.icerock.moko:resources", version.ref = "moko-resources" } moko-resources-compose = { module = "dev.icerock.moko:resources-compose", version.ref = "moko-resources" }
3. 排查并移除错误的配置引用
全局搜索项目配置文件,确保没有任何地方直接使用metadataCompilationApi作为依赖配置——该配置是Gradle内部用于元数据编译传递的,不能用来声明第三方依赖。
4. 验证仓库与Gradle兼容性
检查settings.gradle.kts是否包含Moko插件的仓库:
pluginManagement { repositories { google() mavenCentral() gradlePluginPortal() maven("https://maven.icerock.dev/releases") // Moko插件专属仓库 } }
同时确认gradle.properties中的Gradle版本与依赖兼容(建议使用Gradle 8.x以上版本):
org.gradle.jvmargs=-Xmx2048M kotlin.mpp.stability.nowarn=true # 若支持iOS目标,保留此配置 compose.experimental.uikit.enabled=true
5. 清理并重建项目
执行以下命令刷新依赖并重新构建:
./gradlew clean ./gradlew build --refresh-dependencies
内容的提问来源于stack exchange,提问作者Afshin Samiei
相关产品推荐
相关产品推荐

