模块使用不兼容的 Kotlin 版本进行编译。其元数据的二进制版本为 1.5.1,但期望版本为 1.1.15。

329
Stripe中,我的客户希望获取电子邮件和持卡人姓名,但Stripe支付界面在com.stripe.android.view.CardMultilineWidget中没有提供该选项。我想尝试一下最新的Stripe版本。
我使用的是Stripe版本(14.1.1)。所以我将其更新到最新版本(16.8.0)。
构建过程中显示了一个错误,它不支持minSdkVersion 19。在manifest merger中需要21。所以我将minSdkVersion更新为21
我遇到了以下问题:
caches/transforms-2/files-2.1/4541b0189187e0017d23bbb0afebd16a/jetified-kotlin-stdlib-common-1.5.0.jar!/META-INF/kotlin-stdlib-common.kotlin_module: 该模块是使用不兼容的Kotlin版本编译的。其元数据的二进制版本为1.5.1,而期望版本为1.1.15。

我尝试更改Gradle版本,但仍然遇到相同的错误。我该如何解决不兼容的错误,并在Stripe中添加电子邮件和持卡人姓名?

1
关于 Kotlin 构建错误,这两个之前的回答是否有帮助?https://dev59.com/jFEG5IYBdhLWcg3wWbH5#67470309 https://dev59.com/b5Pfa4cB1Zd3GeqPGa_J#35170452 - Nolan H
2
在构建使用我的库的应用程序时,我遇到了这个问题。它似乎是由于 Kotlin Gradle 插件从 1.4.32 更新到 1.5.31 导致的。为了解决这个问题,我将 languageVersion 和 apiVersion 更改为“1.4”,并构建了一个新版本的库。虽然与此处描述的客户端问题没有直接关系,但对于库维护者可能会有所帮助。 - fejd
37个回答

511
< p > 修改 build.gradle 文件解决了我的问题。

来自:

ext.kotlin_version = '1.3.50'

to
ext.kotlin_version = '1.6.0'

请使用Kotlin的最新版本并确保在Android Studio上更新Kotlin版本。


32
这行代码在此文件中:"flutter_app/android/build.gradle"。 - Paul
最低SDK版本为24。 - Mohammed Alanany
6
有关此处发生的详细解释,请参见此答案 https://dev59.com/21EG5IYBdhLWcg3wVqr9#74425347 - aaronvargas

224

虽然这个问题已经得到解答,但我认为值得解释一下发生了什么

以以下示例为例:

The binary version of its metadata is 1.7.1, expected version is 1.5.1.

expected 版本是指适用于 kotlin-gradle-plugin 的 Kotlin 版本。

binary 版本是指已下载或先前编译好的 com.android.tools.build:gradle 版本。

<project_dir>/android/build.gradle

是文件路径,指向项目中的 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

为什么这种情况如此频繁发生?

  1. 根据警告,用户更新了插件的Kotlin版本以匹配IDE版本。

Warning from Android Studio to match Kotlin Versions

  1. 根据警告,用户更新了Android构建工具gradle插件。

Warning about android build tools

这是错误的版本!

现在你没有任何警告,但是建议的版本是7.1.3,不是最新的。7.3.1是当前最新版本,是元数据1.7.1,因此它将与1.7.20的Kotlin版本匹配(也是元数据1.7.1

还可能有哪些问题?

由于缓存的原因,Gradle可能会在您更新之前使用较旧的依赖项。要从头开始:

  1. 删除~/.gradle/cache目录
  2. 删除android/.gradle目录
  3. 删除project_dir/build目录
  4. 确保android/gradle/gradle-wrapper.properies具有正确的distributionUrl(目前为distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
  5. project_dir执行flutter build apk

注意:如果com.android.tools.build:gradle版本过旧,则可能需要更新依赖项。或者,Kotlin和tools:gradle版本都可以降级到与元数据匹配的兼容版本(尽管Android Studio会警告不匹配IDE Kotlin版本)

如何避免再次发生这种情况?


8
应该是被接受的答案,在这里是最佳答案。 - alfietap
确保版本,并检查列表 URL 的正确版本解决了问题。由于某种原因,版本号为1.5.30而不是1.7.2。 - Chrismisballs
2
这个怎么样?这是正确的答案。谢谢你! - Abner Escócio
所以,这是一个 AGP 版本检查问题。AGP 应该验证项目当前使用的 Kotlin 版本是否兼容。 - zwh
在Google Captcha V3 SDK集成中,我也遇到了这个问题,以下解决方案对我有效:ext.kotlin_version = "1.7.20" classpath "com.android.tools.build:gradle:7.3.1" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - Yogesh Srivastava
显示剩余2条评论

62

我在Flutter项目中遇到了这个问题。

在我的情况下,Android的build.gradle文件中缺少一个kotlin-gradle-plugin行,因此添加ext.kotlin_version = '1.6.10'并没有解决它。

添加以下内容后:

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

错误消失了。

完整代码部分:

buildscript {
    ext.kotlin_version = '1.6.10'
    repositories {
        google()
        mavenCentral()
    }

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

这在我的Flutter项目中也起作用。 - Jack Fox
这对我来说也起作用了,但仍然不清楚为什么需要这样做。 - vnaren001
3
我遇到了与React Native应用程序相同的问题,但是我通过这种方式解决了它,谢谢。 - Ashirbad Panigrahi
这个运行得很完美。尽管它已经过时了。 - deva11

29
如果您在Flutter构建Android时遇到此错误,请尝试更改Kotlin版本为 ext.kotlin_version = '1.4.32'。请参考以下链接解决问题:Enter image description here

1
如果1.4.32不起作用,请尝试1.6.0。 - Geomatik Mühendisi

22

首先,进入设置,然后导航到插件。找到Kotlin插件并更新它。

接下来,在gradle文件中,转到build.gradle(项目:YourApp)。 然后,将以下代码(在buildscript中)从原来的代码进行更改:

ext.kotlin_version = '1.3.50'

升级到最新版本,例如:

ext.kotlin_version = '1.4.32'

要获取最新版本,请进入设置和插件,查找Kotlin插件并确保其已更新。 最新版本在JetBrains下面。

按照说明操作后,您的错误将得到解决。


2
我的当前项目非常老旧。只有1.4.32版本可以解决我的问题。更新到新版本会产生一些问题。 - antaki93
更好的做法是查看他们在这里推荐的内容:https://docs.flutter.dev/release/breaking-changes/kotlin-version。 - Daniel Porteous

16

确保您IDE 中使用的 Kotlin 版本与 gradle.build 文件中声明的版本相同。


1
这并不是必需的。IDE 应该向后兼容所有 Kotlin 版本。 - Carson Holzheimer

15

通过更新Kotlin Gradle插件版本,问题已得到解决。

在项目级别的build.gradle文件中,更新以下行:

ext.kotlin_version = '1.6.10'

您可以在工具/构建工具/Gradle中找到最新的Kotlin Gradle插件版本。


3
我已经有了那个,但我面临同样的问题。 - zegkljan

14

将项目构建 gradle 更改为

    buildscript {
    ext.kotlin_version = '1.7.20'
    repositories {
        google()
        mavenCentral()
    }

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

此解决方案适用于Flutter项目。 - Wanderson Santos
1
也适用于我的React Native项目! - Justin

11

在我的情况下

其元数据的二进制版本为1.7.1,预期版本为1.5.1。

需要进入build.gradle(项目)中的dependencies,将版本号从1.5.x转换过来。在我的情况下,x是20。

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20"

升级到1.7.10

 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10"

它对我也起作用了。我只是像这样更改它:classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10" - heet kanabar

9

你需要做什么来解决这个问题?

我从昨晚开始一直面临这个问题。仅浏览一些网页就无法找到确切的解决方案。我最终通过以下步骤解决了它:

  • build.gradle文件中用ext.kotlin_version = '1.4.32'替换 ext.kotlin_version = '1.3.50'
  • 清理项目使用Gradle文件构建项目运行

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接