升级com.google.firebase:firebase-bom至32.6.0时Gradle构建失败
场景与错误信息
将com.google.firebase:firebase-bom从29.0.0版本升级至32.6.0版本后,出现编译错误:
/Users/macuser/.gradle/caches/transforms-3/467bb9d3066a57ac5f94cf19b169a6ba/transformed/jetified-play-services-measurement-api-21.5.0-api.jar!/META-INF/java.com.google.android.gmscore.integ.client.measurement_api_measurement_api.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.6.0.
当前环境配置
- Gradle版本:
7.3.3 - Kotlin依赖版本:
org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21 org.jetbrains.kotlin:kotlin-reflect:1.6.21
已尝试操作:删除Gradle缓存及.gradle文件夹,问题未解决。
问题原因
- Firebase BOM 32.6.0依赖的
play-services-measurement-api:21.5.0模块是用Kotlin 1.9编译的,而项目使用的Kotlin 1.6.21版本过低,无法识别高版本Kotlin生成的元数据,导致兼容性冲突。 - Gradle与Kotlin版本存在绑定关系:Gradle 7.3.3最高仅支持到Kotlin 1.7.x,无法适配Kotlin 1.9版本,这也加剧了版本不匹配问题。
解决步骤
升级Kotlin版本
将项目级build.gradle中的Kotlin插件版本,以及模块级build.gradle中的kotlin-reflect版本统一升级到1.9.x(推荐1.9.20或更高适配Firebase的版本):
项目级build.gradle:dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.20" // 其他依赖保持不变 }模块级build.gradle:
implementation "org.jetbrains.kotlin:kotlin-reflect:1.9.20"升级Gradle版本
修改gradle/wrapper/gradle-wrapper.properties中的distributionUrl,将Gradle版本升级到7.5及以上(推荐8.x版本,兼容性更优):distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip同步并清理项目
执行Gradle同步操作,之后运行命令./gradlew clean build --refresh-dependencies,确保新依赖生效并彻底清理缓存。
内容的提问来源于stack exchange,提问作者tiredqa_18

