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

KMM项目Android端添加最新版Kodein失败及依赖冲突问题

问题成因

  1. 依赖命名不匹配:Kodein从7.x版本开始废弃了kodein-di-generic-jvm的构件命名,你沿用旧名称引入7.5.1版本的依赖,对应构件不存在,导致依赖未正常下载,因此IDE无法识别Kodein相关类。
  2. 仓库配置失效:项目级build.gradle中配置的Bintray仓库已于2021年正式停服,且你为org.kodein组指定了从无效的Kotlin EAP Bintray仓库拉取依赖,进一步导致7.x版本的Kodein依赖无法正常拉取。
  3. 版本不统一冲突:降级后你使用的kodein-di-generic-jvm:5.0.1和kodein-di-framework-android-x:5.2.0版本号不一致,两个不同版本的构件包含大量同名类,因此触发重复类编译报错;如果shared模块也引入了Kodein依赖,跨模块版本不同也会导致同类冲突。

解决方案

  1. 清理无效仓库配置:删除项目级build.gradleallprojects.repositories块中两个Bintray相关的maven配置,Kodein 7.x版本已全部发布到Maven Central,无需额外配置私有仓库。修改后的仓库配置示例:
allprojects {
    repositories {
        google()
        mavenCentral()
        maven(url = "https://jitpack.io")
    }
}
  1. 替换为正确的7.x版本依赖:在Android模块的build.gradle中替换旧的Kodein依赖配置,统一使用相同版本号的正确构件名:
implementation("org.kodein.di:kodein-di:7.5.1")
implementation("org.kodein.di:kodein-di-framework-android-x:7.5.1")
  1. 跨模块版本统一(可选,若shared模块使用Kodein):在shared模块的commonMain依赖中添加相同版本的Kodein通用依赖,保证全项目Kodein版本一致:
commonMain {
    dependencies {
        implementation("org.kodein.di:kodein-di:7.5.1")
    }
}
  1. 强制锁定版本(可选,若仍有冲突):在Android模块的build.gradle中添加版本强制配置,避免依赖传递引入不同版本的Kodein:
configurations.all {
    resolutionStrategy {
        force("org.kodein.di:kodein-di:7.5.1")
        force("org.kodein.di:kodein-di-framework-android-x:7.5.1")
    }
}
  1. 清理缓存重构:执行Android Studio的File → Invalidate Caches,勾选清理文件系统缓存选项后重启IDE,再执行./gradlew clean build完成构建。

内容的提问来源于stack exchange,提问作者Sergei Mikhailovskii

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 17:54:03