虽然这个问题已经得到了回答,但我认为有必要解释一下正在发生的事情
例如:
The binary version of its metadata is 1.7.1, expected version is 1.5.1.
预期的版本是Kotlin for Kotlin -gradle-plugin
二进制版本是下载的(或之前编译的)
com.android.tools.build: gradle
< project_dir > - android gradle构建。
buildscript {
ext.kotlin_version = '1.5.20' // <= expected version is 1.5.1
}
dependencies {
classpath 'com.android.tools.build:gradle:7.3.1' // downloads 1.7.1 Metadata
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // <= 1.5.20 used here
为什么这种情况如此普遍?
用户根据警告更新插件的Kotlin版本以匹配IDE版本。
用户根据警告更新android构建工具gradle插件
这是错误的版本!
现在你没有任何警告,但建议的版本是7.1.3,这不是最新的。(我不知道为什么它建议这个旧版本)7.3.1是目前最新的,是元数据1.7.1,所以它将匹配Kotlin版本的1.7.20(也是元数据1.7.1)
还有什么错呢?
由于缓存,gradle可能在你更新之前使用了一个旧的依赖项。清洁开始:
删除~/.gradle /缓存目录
删除“android/.”gradle目录
删除project_dir/build目录
确保android/gradle/gradle-wrapper。property有正确的distributionUrl(当前distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip)
从project_dir做颤振构建apk
注意:你的依赖可能需要更新如果他们的com.android.tools。Build:gradle版本太旧。或者,kotlin和tools:gradle版本都可以降级为匹配元数据的兼容版本(尽管Android Studio会警告不匹配IDE kotlin版本)
如何防止这种情况再次发生?
对于ext.kotlin_version,通常使用与IDE相同的Kotlin版本。看到https://kotlinlang.org/docs/releases.html版本细节
仔细检查com.android.tools。构建:gradle版本。参见https://developer.android.com/studio/releases/gradle-plugin#updating-gradle和https://mvnrepository.com/artifact/com.android.tools.build/gradle?repo=google