模块是用一个不兼容的Kotlin版本编译的。其元数据的二进制版本是1.5.1,预期版本是1.1.16

回答 33 浏览 20.2万 2021-05-08

我是一个Kotlin应用开发的初学者。当我试图构建应用程序时,出现了以下错误。

C:/Users/Lenovo/.gradle/caches/transforms-2/files-2.1/32f0bb3e96b47cf79ece6482359b6ad2/jetified-kotlin-stdlib-jdk7-1.5.0.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.5.1, expected version is 1.1.16

screenshot

是关于更新模块吗?那么如何更新呢?

Saheel Sapovadia 提问于2021-05-08
你能展示一下你的应用程序和项目的build.gradle吗?Ananiya Jemberu 2021-05-08
在我的例子中,问题发生在Jetpack DataStore库中。我删除了它并重建了它。问题消除了,但不知道为什么会发生这种情况。Zeeshan Akhtar 2021-07-08
meta.stackoverflow.com/questions/285551/…Stephan Vierkant 2021-07-12
33 个回答
#1楼 已采纳
得票数 224

对于那些仍在寻找答案的人来说,这里是这个问题的工作解决方案。在你的项目上打开build.gradle文件,将ext.kotlin_version从你目前的任何版本(如1.5.0)增加到最新的稳定版本1.6.0(无论当时是什么)。谢谢

你可以从这里获得最新的版本。

https://kotlinlang.org/docs/releases.html#release-details

Ali Raza 提问于2021-06-03
Ali Raza 修改于2022-04-22
它确实有效,但能否请你告诉我它是如何工作的。Justin 2021-06-04
根据我的想法,有时候,Android Studio会停止支持Kotlin的旧版本,特别是当你的Android Studio是最新的时候。这只是我的想法,我也不知道具体的原因。但是,这个解决方案每次都是有效的。Ali Raza 2021-06-05
在我的案例中,这个问题是在我更新Android Studio中的一些插件时出现的。Ali Raza 2021-06-05
是的,在gradle-wraper-properties文件中把gradle-6.7.1的版本改为gradle-6.9,也把ext.kotlin-version = '1.4.32'的版本改为ext.kotlin-version = '1.4.32',就可以解决这个问题了。Akki Jangir 2021-07-25
在一个flutter@2.5.2的项目中设置为1.5.31,对我来说就解决了这一问题。Nick Ribal 2021-10-08
#2楼
得票数 60

我在从Kotlin 1.4.30更新到1.5.0时发生了这种情况。似乎是某种Gradle的缓存问题。我能够通过将Gradle6.7.1更新到6.9(或任何其他版本)来解决它。

只需进入gradle-wrapper.properties并将这一行从

distributionUrl=https://services.gradle.org/distributions/gradle-6.7.1-all.zip

修改为

distributionUrl=https://services.gradle.org/distributions/gradle-6.9-all.zip

Sir Codesalot 提问于2021-05-10
Sir Codesalot 修改于2021-05-23
不要这样做。只要按照阿里-拉扎的答案去做。Kishan Solanki 2021-07-28
@KishanSolanki 你能解释一下原因吗?阿里-拉扎的回答对我没有帮助!Sir Codesalot 2021-07-29
阿里的答案对我来说也不起作用,错误依然存在。marchinram 2021-10-19
许多答案和评论都是针对现在已经过时的版本。一个更通用的答案会更有帮助。Ingo Steinke 2022-04-23
我刚刚在android/build.gradle文件中添加了一个新的版本。事实上,如果你遇到kotlin版本错误,它会带你到kotlin网站,你可以从那里复制版本并放到android/build.gradle文件中。但有时你可能需要从依赖关系中获得正确的版本 { classpath 'com.android.tools.build:gradle:7.1.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" }如果你把鼠标悬停在它上面,它会告诉你正确的,并把它放在那里dylan 2022-08-23
#3楼
得票数 34

我在IntelliJ IDEA版本中面临同样的问题。Ultimate 2019.3

当我多次改变jar的版本并点击调试按钮运行应用程序时,问题就发生了。

当我使用下面的步骤时,问题得到了解决。

打开IntelliJ >>Build >> Rebuild Project。

之后,我再次运行该应用程序,它对我来说是有效的。

Ved Singh 提问于2021-09-28
非常感谢维德。你救了我一整天。我在我的项目中没有使用Kotlin,我不知道为什么我会遇到这个问题。Muhammad Tariq 2022-11-02
#4楼
得票数 19

我把kotlin的版本更新到了最新的版本,这对我很有帮助。

在这里

enter image description here

并将Android Studio的黄色提示从这个implementation "androidx.core:core-ktx:+"修正为这个implementation "androidx.core:core-ktx:1.5.0"

enter image description here

Dyno Cris 提问于2021-06-21
#5楼
得票数 8

在我的案例中,当我把androidx.core:core-ktx:1.3.1升级到androidx.core:core-ktx:1.6.0时,问题就出现了。

在这个库的发布说明中提到

注意:Core和Core-ktx 1.5.0及以上版本只能针对Android 11 SDK进行编译**。

https://developer.android.com/jetpack/androidx/releases/core#core_and_core-ktx_version_150_2

解决方案:将你的库降级到1.5.0,然后进行同步。如果是这样的话,那么错误就会消失。

Zeeshan Akhtar 提问于2021-07-08
Dharman 修改于2021-07-08
这是解决该问题的最佳答案。thiagolsilva 2021-08-25
#6楼
得票数 7

在我的例子中,我没有buildScript块,也没有ext.kotlin_version在我的ProjectRoot/build.gradle中。相反,有一个plugins块,描述我的kotlin版本。

plugins {
    id 'com.android.application' version '7.2.2' apply false
    id 'com.android.library' version '7.2.2' apply false
    id 'org.jetbrains.kotlin.android' version '1.5.30' apply false
}

org.jetbrains.kotlin.android改成1.7.10,就像。

plugins {
    id 'com.android.application' version '7.2.2' apply false
    id 'com.android.library' version '7.2.2' apply false
    id 'org.jetbrains.kotlin.android' version '1.7.10' apply false
}

这个问题终于得到解决了,希望能帮助到别人。

Penut Chen 提问于2022-08-08
谢谢你的帮助。花了太长时间才弄清楚DIRTY DAVE 2022-10-20
#7楼
得票数 6

我不得不更新Kotlin的Gradle插件以匹配Kotlin标准库。在{project}/build.gradle.

buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:{kotlin version}"
    }
}

我还删除了对标准库的依赖性的标注,因为现在已经根据我的依赖性在Gradle中烘托出来了,尽管这没有那么直接的关系。 删除{project}/{app module}/build.gradle中的这一行。

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:{kotlin version}"
    ...
}

参考资料。异常错误博文

methodsignature 提问于2021-10-06
methodsignature 修改于2021-10-06
#8楼
得票数 6

转到项目build.gradle并更新"ext.kotlin_version = 1.5.0"。

Eray Hamurlu 提问于2021-10-08
#9楼
得票数 6

今天,当我用最新的Android Studio在现有的大项目中添加一个新项目时,发生了这种情况,但我在任何地方都找不到上述的ext.kotlin_version来解决这个问题。总之,在将build.gradle文件与一个工作正常的新独立项目的文件进行比较后,我发现在这里改变1.6.0

dependencies {
    implementation 'androidx.core:core-ktx:1.6.0'
    ...
}

1.3.2就可以解决这个问题了。

dependencies {

    implementation 'androidx.core:core-ktx:1.3.2'
    ...
}
Datow King 提问于2021-10-17
#10楼
得票数 3

如果今后有人遇到这个问题,请检查以下versionsdependenciesclasspathversions

ext.kotlin_version = "1.4.32"

确保gradle-wrapper.properties具有与你的kotlin版本相兼容的distribution网址。

distributionUrl=https://services.gradle.org/distributions/gradle-6.9-bin.zip

应用程序级别 build.gradle 检查

implementation 'androidx.core:core-ktx:1.5.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.3'

注意:检查这些依赖关系,它可能会导致问题,在我的例子中,coroutines-android使用的是1.6.0-RC2,这是coroutine的最新版本,然后我检查了github发布的版本,得到了适合我的项目gradle配置的正确版本。

你可以从github发布的版本中查看kotlinx-coroutines-android版本

https://github.com/Kotlin/kotlinx.coroutines/releases

你也可以从developer.android.com上查看core-ktx的版本。

https://developer.android.com/jetpack/androidx/releases/core

Fazal Hussain 提问于2021-12-15
#11楼
得票数 3

未清除的Gradle缓存也可能是一个问题。我也面临这个问题,通过删除根目录下的.gradle/caches目录解决了这个问题。

步骤。

  • 删除位置中的caches目录,[RootFolder]/.gradle/caches
  • 使缓存失效并重新启动
  • 重建项目

参考:https://stackoverflow.com/a/23029580/10506244

Alex 提问于2022-03-30
Toshal Agrawal 修改于2022-06-01
#12楼
得票数 2

最近我的Jenkins构建失败了,出现了类似的错误信息。并尝试了以下方法来缓解这个问题。

可能的原因是什么?

  1. 在Gradle设置选项中,离线工作模式为 "ON",在编译过程中会使一些依赖关系失效。
  2. 更新的Android Studio停止支持旧的Kotlin版本。(可能性非常小)
  3. 与Gradle插件(com.android.tools.build:gradle)的Gradle发行版本不兼容。
  4. Gradle的缓存问题
  5. 从错误声明来看,该模块似乎是用不兼容的Kotlin版本编译的。例如,你在你的项目中添加了一些sdk的依赖,而这些sdk的编译版本与你的应用程序使用的kotlin版本不同(不兼容)。

可行的解决方案。

  1. 离线工作模式应该在Gradle设置选项中被关闭。

  2. 重新启动Kotlin插件,并重新启动Android Studio。

  3. 从你的项目中删除/升级新添加的sdk依赖项

  4. 验证Gradle发布版本是否与Android等级插件这里兼容。

  5. 根据gradle-wrapper.properties中的最新版本(或更高版本)更改 "distributionUrl "网址
    命令行(更好的方法): `./gradlew wrapper --gradle-version X.Y.Z'。

    手动:改变Wrapper的gradle-wrapper.properties文件中的distributionUrl属性。

    这里找到将在gradle-wrapper.properties中使用的最新版本的Gradle。

  6. 升级Kotlin的版本。把ext.kotlin.version从你的任何版本升级到'1.4.32'或任何最新的版本这里

请注意,可能有许多可能的原因,因此,解决方案。在我的案例中,解决方案#5和#6的组合效果不错。

Akki 提问于2021-06-08
是的,#5 &;我也是#6。galaxigirl 2022-05-22
#13楼
得票数 2

在推迟了近一年的时间来处理这个问题后,发现这个解决方案非常容易实施。

我不得不在build.gradle文件的"repositories"部分中用mavenCentral()替换已被废弃的jcenter()。

Tor Brick 提问于2022-01-04
Tor Brick 修改于2022-01-12
#14楼
得票数 2

你刚刚重建了你的项目。

  1. 打开IntelliJ集成开发环境
  2. Build
  3. Rebuild Project
Mounir bkr 提问于2022-06-08
#15楼
得票数 2

首先,我们需要知道冲突从何而来。

二进制版本1.5.1并不是所使用的kotlin-stdlib的版本,这可以通过检查依赖树来了解。在我的例子中,我使用的是androidx.core:core-ktx:1.6.0,它依赖于org.jetbrains.kotlin:kotlin-stdlib:1.5.10

预期的版本取决于在build.gradle项目文件中使用的kotlin-gradle-plugin的版本。

所以在我的案例中,androidx.core:core-ktxkotlin-gradle-plugin版本之间不兼容。为了解决这个冲突,我有两个选择。要么升级KGP,要么降级ktx。

在build.gradle(项目)中

ext.kotlin_version = '1.3.40'     // not compatible with ktx:1.6.0
//  ext.kotlin_version = '1.4.31' // upgrading KGP fixes the issue
dependencies {
    classpath 'com.android.tools.build:gradle:3.5.2'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}

在build.gradle(模块)中

//  implementation "androidx.core:core-ktx:1.2.0" // downgrading ktx fixes the issue
implementation "androidx.core:core-ktx:1.6.0"     // not compatible with kotlin_version = '1.3.40'

在gradle-wrapper.properties中

distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

这里的规则是选择一个发布日期与KGP发布日期接近的ktx版本。两者的链接可以在下面找到。

https://developer.android.com/jetpack/androidx/releases/core

https://developer.android.com/studio/releases

https://developer.android.com/studio/releases/past-releases

https://developer.android.com/studio/releases/gradle-plugin

Hasan El-Hefnawy 提问于2022-06-23
#16楼
得票数 2

自2022年11月4日以来,RN发生了这个问题,请参考下面的链接来解决。https://github.com/facebook/react-native/issues/35210

Anupam Chaplot 提问于2022-11-09
可以确认--这就解决了这个问题stonedauwg 2022-11-09
#17楼
得票数 1

对我来说,我不得不将Android Studio更新为4.2.2。将gradle更新为7.0。以及执行kotlin迁移(可能与此无关)。最后,将我的ext.kotlin_版本更新为1.5.20。在所有这些之后,我使缓存无效并重新启动了Android studio

Chris Lee 提问于2021-07-02
Salahuddin Ahmed 修改于2021-07-04
#18楼
得票数 1

对我来说,更新kotlin插件、kotlin版本和分发网址的工作Kotlin Plugin

kotlin_version = '1.4.32'

distributionUrl=https\://services.gradle.org/distributions/gradle-6.9.1-all.zip
heathkev 提问于2021-09-16
#19楼
得票数 1

我昨天遇到了这个问题。解决办法是将build.gradle中的kotlin版本改为1.5.0,将项目结构中的Gradle版本改为6.9。

ext.kotlinVersion = '1.5.0'

enter image description here

AR Hakim 提问于2021-12-19
#20楼
得票数 1

在你的build.gradle文件中,将ext.kotlin_version增加到1.6.0。

ext.kotlin_version = '1.6.0'
Yasser Benmman 提问于2022-05-09
#21楼
得票数 0

我刚刚把所有东西都更新到了最新版本。而且是安卓工作室自己提到的最新版本。

比如说

    ext.kotlin_version = '1.5.20'

    dependencies {
        classpath 'com.android.tools.build:gradle:4.2.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.4.0-alpha04"
    }

而且

distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip

在gradle-wrapper.properties中

shehzy 提问于2021-07-17
#22楼
得票数 0

经过4个小时的测试,不同版本的Kotlin被我的项目NOT A KOTLIN PROJECT这个解决方案解决了我的问题。

进入Intellij并禁用Kotlin插件。然后重新编译一切。

Charly Monzon 提问于2022-01-28
对我来说,这使AndroidStudio崩溃了,它不再启动。我不得不手动修复disabled_plugins.txt,使其重新工作。Paolo Brandoli 2022-03-07
哦,我很抱歉听到这个消息!我的意思是说,我不知道该怎么办。Charly Monzon 2022-03-15
Android studio停止打开了Richa 2022-04-05
在IntelliJ上,如果完全不使用或不关心kotlin,禁用kotlin puglin实际上是有效的!这给了我一个提示,问题可能来自使用kotlin的intellij插件。Donnie 2022-04-28
Android studio给出的错误是" Please reinstall Android Studio from scratch."。ali ozkara 2022-08-14
#23楼
得票数 0

发生这种情况的实际问题是由于kotlin编译器的版本和gradle插件的版本不兼容造成的

我在Chipmunk中生成了一个新的Android项目,我发现ext块下的kotlin_version变量不在那里,build.gradle将硬编码kotlin的版本

因此,要像这样改变你的build.gradle(全局)的内容

buildscript {
    ext {
        compose_version = '1.2.0-beta02'
        kotlin_version = '1.6.21'// This might be missing, you can add it
    }
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:7.2.0"
    


// Do not hardcode this version, instead make it rely on the global variable you declared on top

//No
//classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.20"
//Yes
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "com.google.dagger:hilt-android-gradle-plugin:2.38.1"
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}


gtxtreme 提问于2022-05-26
#24楼
得票数 0

为什么简单地升级Kotlin版本就可以。至少有一个依赖项是针对Kotlin版本编译的,该版本与你正在编译的应用程序或库的Kotlin版本不向后兼容。

另外,你可以找出它是哪个依赖项,并将其降级。然而,这可能会有局限性,所以如果你能升级Kotlin的版本。

记住这个痛苦,如果你写一个Kotlin库给别人使用,请考虑在你编译的Kotlin版本上保守一些,并在发布说明中列出这个版本。

actualadam 提问于2022-07-01
#25楼
得票数 0

我刚刚在android/build.gradle文件中添加了一个新的版本。事实上,如果你遇到kotlin版本错误,它会带你到kotlin网站,你可以从那里复制版本并放到android/build.gradle文件中。但有时你可能需要从以下地方获得正确的版本

 dependencies {
    classpath 'com.android.tools.build:gradle:7.1.2'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
} 

如果你把鼠标悬停在它上面,它会告诉你正确的,并把它放在那里 更多信息 https://youtu.be/WTEPNOQdpB0

dylan 提问于2022-08-23
#26楼
得票数 0

enter image description here

对于那些还在寻找答案的人来说,这里是这个问题的有效解决方案。在你的项目层打开build.gradle文件,将ext.kotlin_version从当前的任何版本(如1.3.61)增加到1.4.0版本(无论当时的最新版本)。谢谢

Vibhu Vineet Kumar 提问于2022-09-07
Boken 修改于2022-10-04
#27楼
得票数 0

在我的案例中,flutter项目和Android studio IDE,kotlin版本和gradle版本之前就已经更新了。

file > Invaladate caches是像魅力一样的工作。

Sajjad 提问于2022-11-02
#28楼
得票数 0

有时冲突来自于保存的android studio项目设置。试着用Gradle文件和android studio的快捷方式来同步你的项目,

from: File -> 与Gradle文件同步的项目

这将重建并下载所有必要的文件。

Andrew Amin 提问于2022-11-03
#29楼
得票数 0

对于react native来说,以下的解决方案是可行的

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    // ...
}


allprojects {
    repositories {
+       exclusiveContent {
+           // We get React Native's Android binaries exclusively through npm,
+           // from a local Maven repo inside node_modules/react-native/.
+           // (The use of exclusiveContent prevents looking elsewhere like Maven Central
+           // and potentially getting a wrong version.)
+           filter {
+               includeGroup "com.facebook.react"
+           }
+           forRepository {
+               maven {
+                   // NOTE: if you are in a monorepo, you may have "$rootDir/../../../node_modules/react-native/android"
+                   url "$rootDir/../node_modules/react-native/android"
+               }
+           }
+       }
        // ...
    }
}
Rajesh Nasit 提问于2022-11-08
#30楼
得票数 0

将gradle插件升级到最新版本。如果有可用的更新,Android Studio v3.0+会提示更新gradle。

对于Flutter项目,在Android Studio中打开Android应用程序,并按照上面提到的方法升级gradle。

Akbar ibrahim 提问于2022-11-08
#31楼
得票数 0

我在几周后运行我的项目时遇到了这个错误,我运行了react-native run-android的命令。在运行命令后,我注意到react-native-0.71.0-rc.0-debug.aar正在被下载。在互联网上挖来挖去后,我发现了github上的这个问题,以及这个评论,其中说明了问题的原因。正如评论中所说。

  • ypical react-native publish does not publish to maven central.
  • this RC was published to maven central and has a higher version than local
  • typical react-native build.gradle thus pulls the new (unwanted) RC version from maven central

这个问题是解决问题的办法,它说的是react-native的人已经准备了补丁修复,你可以更新你目前的react-native版本,来解决这个问题。我当时使用的是react-native版本的0.68.2,我按照问题所述,更新到了0.68.5的补丁版本,它解决了这个问题。

Cid 提问于2022-11-11
#32楼
得票数 -1

再次创建新项目对我有帮助:|如果你需要修复另一个项目,你可以尝试从新的flutter项目模板中复制android/build.gradleandroid/app/build.gradle到另一个项目。

Кobak 提问于2021-12-20
Кobak 修改于2021-12-22
您的答案可以通过其他支持信息得到改进。请编辑以添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到更多关于如何写出好的答案的信息。Community 2021-12-21
#33楼
得票数 -1

最后,工作的解决方案是,我们需要从你的项目build.gradle文件中升级你的kotlin版本。

mainsh agrahari 提问于2022-03-19