Room与Kotlinx Coroutines的org.jetbrains:annotations版本冲突导致项目构建失败
Room与Kotlinx Coroutines的org.jetbrains:annotations版本冲突导致项目构建失败
嘿,我看你遇到了Room和项目里其他依赖(比如Compose Destinations)之间的org.jetbrains:annotations版本冲突问题,这在多依赖的Android项目里挺常见的,我帮你梳理下解决思路和具体步骤:
一、先清理重复依赖
我注意到你的build.gradle里重复声明了不少依赖(比如navigation、lifecycle、destinationsKsp都写了两次),这会增加依赖解析的复杂度,先把这些重复项去掉:
原依赖块里的重复部分:
implementation(libs.bundles.navigation) ksp(libs.destinationsKsp) ... implementation(libs.bundles.navigation) // 重复 ksp(libs.destinationsKsp) // 重复 implementation(libs.bundles.lifecycle) // 重复
清理后只保留一次即可,减少不必要的解析负担。
二、强制统一org.jetbrains:annotations版本
Gradle依赖冲突的核心是不同库拉取了同一依赖的不同版本,我们可以通过强制指定统一版本来解决,有两种常用方式:
方式1:在依赖块里直接强制指定版本
在dependencies块中添加强制依赖,比如选择Room 2.7.2兼容的24.1.0版本(你可以根据实际冲突的版本调整):
dependencies { // 其他依赖... // 强制统一org.jetbrains:annotations版本 implementation("org.jetbrains:annotations:24.1.0") { force = true } }
方式2:全局强制所有配置使用统一版本
如果想更彻底地统一整个项目的版本,可以在android块外添加全局解析策略:
configurations.all { resolutionStrategy { // 替换成你需要统一的版本号 force "org.jetbrains:annotations:24.1.0" } }
三、补全Room的KSP配置
我注意到你在版本目录里定义了roomcompiler,但当前build.gradle的dependencies里没有通过KSP引入它——Room Compiler需要通过KSP(或kapt)来引入,否则注解处理会出问题,记得加上:
dependencies { // 其他依赖... ksp(libs.roomcompiler) }
最后验证
修改完成后,你可以运行./gradlew :app:dependencyInsight --dependency org.jetbrains:annotations --configuration debugRuntimeClasspath来确认版本是否已经统一,然后重新构建项目。
内容来源于stack exchange
相关产品推荐
相关产品推荐

