给现有Android应用添加KMM模块时出现Gradle仓库配置错误
解决KMM模块添加后的Gradle仓库冲突错误
错误原因
这个错误是因为项目在settings.gradle.kts中配置了优先使用settings级别的仓库(RepositoriesMode.PREFER_SETTINGS),但shared模块的构建过程中(大概率是间接依赖的第三方库)引入了Ivy仓库,而该仓库未在settings中声明,导致Gradle抛出冲突提示。你没在shared/build.gradle.kts里找到Ivy配置,是因为它是被依赖的库间接引入的。
具体解决方案
1. 定位引入Ivy仓库的来源
在Android Studio的Terminal中执行命令,找出是哪个依赖或插件带进来的Ivy仓库:
- Mac/Linux:
./gradlew shared:dependencies --info | grep -A5 -B5 ivy - Windows:
gradlew.bat shared:dependencies --info | findstr /C:"ivy" /A
执行后会输出包含ivy关键字的依赖或仓库配置,从中定位到来源。
2. 在settings中统一声明Ivy仓库
找到来源后,在settings.gradle.kts的dependencyResolutionManagement块中添加对应的Ivy仓库配置,示例如下:
dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) repositories { google() mavenCentral() // 根据定位到的Ivy仓库地址添加配置 ivy { url = uri("对应的Ivy仓库URL") // 若需要,配置仓库布局、认证信息等 layout("gradle") } } }
这样Gradle就会使用settings中声明的仓库,不再报错。
3. 移除不必要的依赖(若适用)
如果定位到的Ivy仓库来自某个你不需要的依赖,直接在shared/build.gradle.kts中移除该依赖即可解决问题。
4. 升级Kotlin/KMM插件版本
旧版本的Kotlin Multiplatform插件可能会默认引入Ivy仓库,将插件升级到最新稳定版:
在项目根目录的build.gradle.kts中更新插件版本:
plugins { id("com.android.application") version "最新Android插件版本" apply false id("org.jetbrains.kotlin.android") version "最新Kotlin版本" apply false id("org.jetbrains.kotlin.multiplatform") version "最新Kotlin版本" apply false }
同步Gradle后,新版本插件可能已移除对Ivy仓库的依赖。
内容的提问来源于stack exchange,提问作者Vivek Mishra
相关产品推荐
相关产品推荐

