模块是用一个不兼容的Kotlin版本编译的。其元数据的二进制版本是1.5.1,预期版本是1.1.16
我是一个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
是关于更新模块吗?那么如何更新呢?
对于那些仍在寻找答案的人来说,这里是这个问题的工作解决方案。在你的项目上打开build.gradle
文件,将ext.kotlin_version
从你目前的任何版本(如1.5.0
)增加到最新的稳定版本1.6.0
(无论当时是什么)。谢谢
你可以从这里获得最新的版本。
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
我在从Kotlin 1.4.30
更新到1.5.0
时发生了这种情况。似乎是某种Gradle
的缓存问题。我能够通过将Gradle
从6.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
我在IntelliJ IDEA版本中面临同样的问题。Ultimate 2019.3
当我多次改变jar的版本并点击调试按钮运行应用程序时,问题就发生了。
当我使用下面的步骤时,问题得到了解决。
打开IntelliJ >>Build >> Rebuild Project。
之后,我再次运行该应用程序,它对我来说是有效的。
我把kotlin的版本更新到了最新的版本,这对我很有帮助。
在这里
并将Android Studio的黄色提示从这个implementation "androidx.core:core-ktx:+"
修正为这个implementation "androidx.core:core-ktx:1.5.0"
。
在我的案例中,当我把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,然后进行同步。如果是这样的话,那么错误就会消失。
在我的例子中,我没有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
}
这个问题终于得到解决了,希望能帮助到别人。
我不得不更新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}"
...
}
参考资料。异常错误博文
转到项目build.gradle并更新"ext.kotlin_version = 1.5.0"。
今天,当我用最新的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'
...
}
如果今后有人遇到这个问题,请检查以下versions
的dependencies
和classpath
的versions
。
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
未清除的Gradle缓存也可能是一个问题。我也面临这个问题,通过删除根目录下的.gradle/caches
目录解决了这个问题。
步骤。
- 删除位置中的
caches
目录,[RootFolder]/.gradle/caches
。 - 使缓存失效并重新启动
- 重建项目
最近我的Jenkins构建失败了,出现了类似的错误信息。并尝试了以下方法来缓解这个问题。
可能的原因是什么?
- 在Gradle设置选项中,离线工作模式为 "ON",在编译过程中会使一些依赖关系失效。
- 更新的Android Studio停止支持旧的Kotlin版本。(可能性非常小)
- 与Gradle插件(com.android.tools.build:gradle)的Gradle发行版本不兼容。
- Gradle的缓存问题
- 从错误声明来看,该模块似乎是用不兼容的Kotlin版本编译的。例如,你在你的项目中添加了一些sdk的依赖,而这些sdk的编译版本与你的应用程序使用的kotlin版本不同(不兼容)。
可行的解决方案。
离线工作模式应该在Gradle设置选项中被关闭。
重新启动Kotlin插件,并重新启动Android Studio。
从你的项目中删除/升级新添加的sdk依赖项
验证Gradle发布版本是否与Android等级插件这里兼容。
根据gradle-wrapper.properties中的最新版本(或更高版本)更改 "distributionUrl "网址
命令行(更好的方法): `./gradlew wrapper --gradle-version X.Y.Z'。手动:改变Wrapper的gradle-wrapper.properties文件中的distributionUrl属性。
从这里找到将在gradle-wrapper.properties中使用的最新版本的Gradle。
升级Kotlin的版本。把ext.kotlin.version从你的任何版本升级到'1.4.32'或任何最新的版本这里。
请注意,可能有许多可能的原因,因此,解决方案。在我的案例中,解决方案#5和#6的组合效果不错。
在推迟了近一年的时间来处理这个问题后,发现这个解决方案非常容易实施。
我不得不在build.gradle文件的"repositories"部分中用mavenCentral()替换已被废弃的jcenter()。
你刚刚重建了你的项目。
- 打开IntelliJ集成开发环境
- Build
- Rebuild Project
首先,我们需要知道冲突从何而来。
二进制版本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-ktx
和kotlin-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
自2022年11月4日以来,RN发生了这个问题,请参考下面的链接来解决。https://github.com/facebook/react-native/issues/35210
对我来说,我不得不将Android Studio
更新为4.2.2
。将gradle
更新为7.0
。以及执行kotlin
迁移(可能与此无关)。最后,将我的ext.kotlin
_版本更新为1.5.20
。在所有这些之后,我使缓存无效并重新启动了Android studio
。
对我来说,更新kotlin插件、kotlin版本和分发网址的工作。
kotlin_version = '1.4.32'
和
distributionUrl=https\://services.gradle.org/distributions/gradle-6.9.1-all.zip
在你的build.gradle文件中,将ext.kotlin_version增加到1.6.0。
ext.kotlin_version = '1.6.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中
经过4个小时的测试,不同版本的Kotlin被我的项目NOT A KOTLIN PROJECT这个解决方案解决了我的问题。
进入Intellij并禁用Kotlin插件。然后重新编译一切。
发生这种情况的实际问题是由于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
}
为什么简单地升级Kotlin版本就可以。至少有一个依赖项是针对Kotlin版本编译的,该版本与你正在编译的应用程序或库的Kotlin版本不向后兼容。
另外,你可以找出它是哪个依赖项,并将其降级。然而,这可能会有局限性,所以如果你能升级Kotlin的版本。
记住这个痛苦,如果你写一个Kotlin库给别人使用,请考虑在你编译的Kotlin版本上保守一些,并在发布说明中列出这个版本。
我刚刚在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
对于那些还在寻找答案的人来说,这里是这个问题的有效解决方案。在你的项目层打开build.gradle文件,将ext.kotlin_version从当前的任何版本(如1.3.61)增加到1.4.0版本(无论当时的最新版本)。谢谢
在我的案例中,flutter项目和Android studio IDE,kotlin版本和gradle版本之前就已经更新了。
file > Invaladate caches
是像魅力一样的工作。
有时冲突来自于保存的android studio项目设置。试着用Gradle文件和android studio的快捷方式来同步你的项目,。
from: File -> 与Gradle文件同步的项目
这将重建并下载所有必要的文件。
对于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"
+ }
+ }
+ }
// ...
}
}
将gradle插件升级到最新版本。如果有可用的更新,Android Studio v3.0+会提示更新gradle。
对于Flutter项目,在Android Studio中打开Android应用程序,并按照上面提到的方法升级gradle。
我在几周后运行我的项目时遇到了这个错误,我运行了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
的补丁版本,它解决了这个问题。
再次创建新项目对我有帮助:|如果你需要修复另一个项目,你可以尝试从新的flutter项目模板中复制android/build.gradle和android/app/build.gradle到另一个项目。
最后,工作的解决方案是,我们需要从你的项目build.gradle文件中升级你的kotlin版本。