android项目中不同的kotlin版本
Posted
技术标签:
【中文标题】android项目中不同的kotlin版本【英文标题】:different kotlin versions in android project 【发布时间】:2021-01-22 02:54:28 【问题描述】:如果我在项目和该项目的依赖项中有不同的 Kotlin 版本,我无法弄清楚我会遇到什么问题。
选项 1:
项目包括Kotlin1.3.72
一些库(例如okhttp
)包括Kotlin 1.4.10
。 (我们现在将 Kotlin 1.4.x 功能接口用于 Authenticator、Interceptor 等。)
选项 2:
项目包括Kotlin1.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 项目上