Android KSP报错:找不到Guava的buildOrThrow()方法
解决KSP中Guava版本冲突导致的NoSuchMethodError问题
1. 定位引入旧版Guava的依赖
- 执行Gradle依赖分析命令,生成KSP配置下的依赖树,精准定位问题:
(若为Release环境,替换./gradlew app:dependencies --configuration kspDebugClasspathkspDebugClasspath为kspReleaseClasspath) - 从输出结果中筛选
com.google.guava:guava相关条目,找出版本低于33.3.1-android的依赖,记录其所属的父依赖。
2. 排除旧版Guava依赖
找到问题父依赖后,在对应模块的build.gradle.kts中排除其自带的旧版Guava,示例:
implementation("com.example:problem-dependency:x.x.x") { exclude(group = "com.google.guava", module = "guava") }
3. 强制所有配置使用指定Guava版本
在根目录build.gradle.kts中,确保**所有配置(包括KSP的注解处理器路径)**都强制使用目标版本:
allprojects { configurations.all { resolutionStrategy { force("com.google.guava:guava:33.3.1-android") // 若存在guava-jre变体,同样强制版本 force("com.google.guava:guava-jre:33.3.1") } } }
4. 清理缓存并重新构建
- 清理Gradle缓存并刷新依赖:
./gradlew clean build --refresh-dependencies - 重启IDE,避免IDE缓存残留干扰构建结果。
额外排查方向
- 升级KSP插件到最新兼容版本,部分旧版KSP可能内置了旧版Guava:
plugins { id("com.google.devtools.ksp") version "1.9.20-1.0.14" // 替换为与你的Kotlin版本匹配的最新KSP版本 } - 确认所有模块的JVM 17配置生效,检查根目录和模块的Java工具链配置:
java { toolchain { languageVersion.set(JavaLanguageVersion.of(17)) } }
内容的提问来源于stack exchange,提问作者Rofie Sagara
相关产品推荐
相关产品推荐

