android项目中不同的kotlin版本

Posted

技术标签:

【中文标题】android项目中不同的kotlin版本【英文标题】:different kotlin versions in android project 【发布时间】:2021-01-22 02:54:28 【问题描述】:

如果我在项目和该项目的依赖项中有不同的 Kotlin 版本,我无法弄清楚我会遇到什么问题。

选项 1:

项目包括Kotlin 1.3.72 一些库(例如okhttp)包括Kotlin 1.4.10。 (我们现在将 Kotlin 1.4.x 功能接口用于 Authenticator、Interceptor 等。

选项 2:

项目包括Kotlin 1.4.0 一些库包括 Kotlin 1.3.71

在选项 2 中,我收到下一个警告: w:类路径中的运行时 JAR 文件应该具有相同的版本。这些文件在类路径中找到: /.gradle/caches/transforms-2/files-2.1/ab41544fa06f7b55dec847efe3b9899c/jetified-kotlin-stdlib-jdk7-1.3.71.jar(1.3版) .gradle/caches/transforms-2/files-2.1/a4c6c3b949eb40b555dea1468ae75f87/jetified-kotlin-stdlib-1.4.10.jar(1.4版) .gradle/caches/transforms-2/files-2.1/f98f62bf33e752598311020043618780/jetified-kotlin-stdlib-common-1.4.10.jar(1.4版) w:类路径中的某些运行时 JAR 文件的版本不兼容。考虑将它们从类路径中删除

【问题讨论】:

【参考方案1】:

/.gradle/caches/transforms-2/files-2.1/ab41544fa06f7b55dec847efe3b9899c/jetified-kotlin-stdlib-jdk7-1.3.71.jar(1.3版)

这可以通过在您的应用程序 build.gradle 依赖项中包含它来解决:

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

另外,我个人也学会了添加以下依赖来避免这些错误:

implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

另外,请确保您的项目 build.gradle 中有 ext.kotlin_version = "1.4.10"

【讨论】:

【参考方案2】:

你会遇到什么问题?当差异不仅存在于次要版本(如 1.3.70 / 1.3.72)中,而且存在于 1.3.x 和 1.4.x 版本之间时,您将面临风险,例如一个库将使用在新版本中更改了其签名的函数,因此会出现运行时错误。这不一定会发生,但它可能会发生(除非您确定您的依赖库不使用任何已更改的函数)。

【讨论】:

然后考虑遵循以下帖子中@R'J 的建议。【参考方案3】:

如果您的项目以 Java 8 为目标,那么只需包含对该 Java 版本的依赖项

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"

如果您面向 Java 6 或 7,请遵循相同的规则。

您在帖子https://medium.com/@mbonnin/the-different-kotlin-stdlibs-explained-83d7c6bf293中对此进行了详细说明

【讨论】:

以上是关于android项目中不同的kotlin版本的主要内容,如果未能解决你的问题,请参考以下文章

错误记录Android Studio 编译报错 ( Module was compiled with an incompatible version of Kotlin. ) 2

错误记录Android Studio 编译报错 ( Module was compiled with an incompatible version of Kotlin. ) 2

android手机安全卫士Kotlin漫画支付宝动画沉浸状态栏等源码

Kotlin 卡在 1.3.31 版本的 Android Studio 项目上

如何在 Kotlin Native 中使用 Http Request 库

如何使用 Kotlin 为 Android 版本构建配置 ProGuard