Kotlin版本升级后遇annotation模块元数据版本不兼容问题求助
问题背景
原本因重复类kotlin.time.jdk8.DurationConversionsJDK8Kt存在于jetified-kotlin-stdlib-1.8.0模块,将Kotlin版本从1.6.0升级至1.8.0后,出现新的元数据版本不兼容错误:
/Users/abc/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation-jvm/1.6.0-beta01/a7257339a052df0f91433cf9651231bbb802b502/annotation-jvm-1.6.0-beta01.jar!/META-INF/annotation.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.8.0, expected version is 1.6.0
解决方案
强制统一AndroidX Annotation依赖版本
报错中的annotation-jvm:1.6.0-beta01是测试版,内置了Kotlin 1.8编译的元数据,但项目依赖解析仍在拉取这个旧测试版。在项目根目录的build.gradle(或build.gradle.kts)中添加依赖约束,强制指定兼容Kotlin 1.8.0的稳定版:
Groovy语法:configurations.all { resolutionStrategy { force 'androidx.annotation:annotation:1.7.0' } }Kotlin DSL语法:
configurations.all { resolutionStrategy.force("androidx.annotation:annotation:1.7.0") }清理Gradle缓存并重新同步
先执行命令清理缓存并刷新依赖:./gradlew clean build --refresh-dependencies也可以手动删除本地缓存目录
/Users/abc/.gradle/caches,然后重新同步项目,确保旧缓存不会干扰依赖解析。确保全项目Kotlin版本一致
检查所有模块(包括library模块)的Kotlin版本配置,统一设置为1.8.0。在根build.gradle中统一定义版本变量,避免版本不一致:
Groovy语法:ext { kotlin_version = "1.8.0" }所有模块的Kotlin依赖都引用这个变量,比如:
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"升级Android Gradle Plugin(AGP)版本
Kotlin 1.8.0建议搭配AGP 7.4.0及以上版本,检查根build.gradle中的AGP版本并升级:dependencies { classpath 'com.android.tools.build:gradle:7.4.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" }确保AGP与Kotlin版本兼容,避免插件版本不匹配导致的元数据解析异常。
内容的提问来源于stack exchange,提问作者Umair Khan

