You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中Kotlin版本不兼容编译错误求助

解决Kotlin版本不兼容导致的Okio编译错误

错误原因

你遇到的编译错误本质是Kotlin版本不匹配:

/home/myuser/.gradle/caches/modules-2/files-2.1/com.squareup.okio/okio-jvm/3.6.0/5600569133b7bdefe1daf9ec7f4abeb6d13e1786/okio-jvm-3.6.0.jar!/META-INF/okio.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.7.1

Okio 3.6.0是用Kotlin 1.9.0编译的,但你的项目当前使用的是Kotlin 1.7.1,两者的元数据版本不兼容,导致编译器无法解析Okio的字节码。

之所以会引入Okio 3.6.0,是因为你声明的直接依赖会触发传递依赖:OkHttp 4.12.0、Retrofit 2.9.0(依赖OkHttp)、Stetho-OkHttp3 1.6.0(依赖OkHttp)都会间接引入Okio,而OkHttp 4.12.0默认依赖的就是Okio 3.6.0版本。

Gradle依赖处理逻辑

Gradle处理依赖的核心规则:

  • 传递依赖自动引入:你写在implementation里的直接依赖,它们自己依赖的库会被Gradle自动加入项目依赖树,不需要你手动声明。比如Retrofit依赖OkHttp,OkHttp依赖Okio,这些都是自动引入的。
  • 版本冲突默认选最新版:如果多个依赖引入了同一个库的不同版本,Gradle默认会选择版本号最高的那个。但如果高版本库的编译环境(比如Kotlin版本)和你的项目不兼容,就会出现你遇到的错误。

解决方案

方案1:升级项目的Kotlin版本(推荐)

把项目的Kotlin版本升级到1.9.0及以上,和Okio 3.6.0的编译版本匹配:
找到项目根目录的build.gradle(或build.gradle.kts),修改Kotlin插件版本:

// 旧版Gradle配置(build.gradle)
buildscript {
    ext {
        kotlin_version = "1.9.0"
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

// 新版Gradle配置(settings.gradle)
plugins {
    id 'com.android.application' version '7.4.2' apply false
    id 'org.jetbrains.kotlin.android' version '1.9.0' apply false
}

方案2:强制降级Okio到兼容版本

如果暂时不想升级Kotlin,可以强制Gradle使用兼容Kotlin 1.7.1的Okio版本(比如3.4.0):

configurations.all {
    resolutionStrategy.force 'com.squareup.okio:okio:3.4.0'
    resolutionStrategy.force 'com.squareup.okio:okio-jvm:3.4.0'
}

注意:降级Okio可能和OkHttp 4.12.0存在潜在兼容性问题,需要测试核心网络功能是否正常。

内容的提问来源于stack exchange,提问作者glades

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 16:42:15