升级Yandex广告SDK后遇Kotlin版本不兼容问题,求解决方案
问题描述
我在Android应用的build.gradle中,将Yandex广告SDK依赖从:
implementation 'com.yandex.android:mobileads:5.10.0' implementation 'com.yandex.ads.mediation:mobileads-admob:22.1.0.0'
升级为:
implementation 'com.yandex.android:mobileads:6.2.0' implementation 'com.yandex.ads.mediation:mobileads-google:22.4.0.0'
后,出现了如下编译错误:
e: C:/Users/dmitr/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation-jvm/1.6.0/a7257339a052df0f91433cf9651231bbb802b502/annotation-jvm-1.6.0.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. e: C:/Users/dmitr/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.8.22/636bf8b320e7627482771bbac9ed7246773c02bd/kotlin-stdlib-1.8.22.jar!/META-INF/kotlin-stdlib-jdk7.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. e: C:/Users/dmitr/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.8.22/636bf8b320e7627482771bbac9ed7246773c02bd/kotlin-stdlib-1.8.22.jar!/META-INF/kotlin-stdlib.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. e: C:/Users/dmitr/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.8.22/636bf8b320e7627482771bbac9ed7246773c02bd/kotlin-stdlib-1.8.22.jar!/META-INF/kotlin-stdlib-jdk8.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. e: C:/Users/dmitr/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.8.22/1a8e3601703ae14bb58757ea6b2d8e8e5935a586/kotlin-stdlib-common-1.8.22.jar!/META-INF/kotlin-stdlib-common.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.
请问这是否意味着我需要升级Java版本?当前我的项目配置如下:
- 项目
build.gradle中的编译选项:
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
- 实际构建使用的Java路径为
C:\Program Files\Android\Android Studio\jbr\bin,版本信息:
javac --version javac 17.0.6
解决方案
这个错误和Java版本无关,是Kotlin版本不兼容导致的:新升级的Yandex SDK依赖了Kotlin 1.8编译的库,但你的项目当前使用的Kotlin插件版本是1.6,两者元数据版本不匹配,所以编译报错。
解决步骤如下:
- 打开项目根目录下的Project级
build.gradle文件,找到Kotlin插件的版本配置,示例如下:
plugins { id 'com.android.application' version 'x.x.x' apply false id 'org.jetbrains.kotlin.android' version '1.6.x' apply false }
- 将Kotlin插件版本升级到1.8.22或更高兼容版本(和报错中出现的Kotlin stdlib版本一致即可),修改后示例:
plugins { id 'com.android.application' version 'x.x.x' apply false id 'org.jetbrains.kotlin.android' version '1.8.22' apply false }
- 点击Android Studio右上角的"Sync Project with Gradle Files"按钮同步项目,之后重新编译即可。
另外,你的Java版本17符合要求,无需调整;项目中配置的sourceCompatibility和targetCompatibility为1.8也没问题,Android Studio会自动处理Java版本的兼容编译。
内容的提问来源于stack exchange,提问作者Alexey Starinsky
相关产品推荐
相关产品推荐

