Android 为什么在类路径中有不同版本的Kotlin JAR?

Android 为什么在类路径中有不同版本的Kotlin JAR?,android,android-studio,kotlin,Android,Android Studio,Kotlin,我决定在AS 3.0中向现有的Java Android项目添加几个Kotlin文件 一旦我添加了Kotlin文件,我就让助手将适当的行添加到我的build.gradle文件中,特别是: project build.gradle buildscript { ext.kotlin_version = '1.2.21' //... dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugi

我决定在AS 3.0中向现有的Java Android项目添加几个Kotlin文件

一旦我添加了Kotlin文件,我就让助手将适当的行添加到我的
build.gradle
文件中,特别是:

project build.gradle

buildscript {
    ext.kotlin_version = '1.2.21'
    //...
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// top of file
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
//....
dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
app build.gradle

buildscript {
    ext.kotlin_version = '1.2.21'
    //...
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// top of file
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
//....
dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
不幸的是,所有版本现在都会产生以下警告:

Warning:Runtime JAR files in the classpath should have the same version. These files were found in the classpath:
/Users/sddsfsd/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.2.21/88bfff5aa470143a83b0bc5ec00c0be8cabd7cad/kotlin-stdlib-jdk7-1.2.21.jar (version 1.2)
/Applications/Android Studio.app/Contents/gradle/m2repository/org/jetbrains/kotlin/kotlin-stdlib-jre7/1.1.51/kotlin-stdlib-jre7-1.1.51.jar (version 1.1)
/Users/sddsfsd/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.2.21/d64187eb2d9d1521be3421aa8c6774a8625cdde8/kotlin-stdlib-1.2.21.jar (version 1.2)
为什么Android Studio在类路径中有自己的旧版本Kotlin?如何删除它

为什么在类路径中有不同版本的Kotlin JAR

您有不同的版本,因为某些依赖项依赖于Kotlin 1.1版本

为什么安卓工作室有自己的旧版本的Kotlin 类路径?如何删除它

像我解释过的和已经解释过的那样更新依赖项

:

类路径中的运行时JAR文件应具有相同的版本。

类路径中的某些运行时JAR文件的版本不兼容

考虑从类路径中删除它们

这意味着您依赖于不同类型的库 版本,例如1.1标准库和1.0反射 图书馆

为了防止运行时出现细微错误,我们建议您使用相同的方法 所有Kotlin库的版本。在这种情况下,考虑添加一个 显式依赖

在您的情况下,间接依赖项已重命名,您需要更新使用它的库:

通过命令或构建选项卡查找冲突依赖项,因为AS 3.1

./gradlew -q dependencies app:dependencies --configuration variantDebugCompileClasspath

,将Realm版本更新为4.3.2时,警告已删除


注意:我检查了我的路径,我在那里也有过时的依赖项,但如果你不使用它也没关系。

可能是因为IntelliJ有自己版本的Kotlin,所以它们可以控制生态系统中使用的内容。我从这里开始:您是否有任何其他第三方依赖关系?他们中的一些人可能会临时带来Kotlin库的旧版本。@热键有几种,Firebase,Crashlytics,等等。有没有办法让Android Studio列出这些依赖项?@hotkey,为什么这些依赖项会将JAR放在
Android Studio.app/
而不是我自己的
.gradle
缓存中?@ray你可以通过运行
/gradlew dependencies
让gradle列出依赖项树。关于AS目录的公平点——似乎有些Android内置库带来了较旧的Kotlin stdlib。