Android项目中不同的Kotlin版本

8
我无法确定如果项目和依赖项中的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文件具有不兼容的版本。考虑从类路径中删除它们。
3个回答

11

/.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"


3

当不同版本之间的差异不仅在次要版本(如1.3.70 / 1.3.72)中时,而是在1.3.x和1.4.x之间的发布版本之间,您可能会遇到哪些问题?您可能面临的风险是一个库将使用在新版本中更改了其签名的函数,因此会发生运行时错误。这不一定会发生,但它可能会发生(除非您确切地知道您的依赖库没有使用任何已更改的函数)。


那么请考虑遵循下面帖子中 @R'J 的建议。 - H Ystad

1

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