警告“ Kotlin插件版本与库版本不同”(但是!)


89

我有一个Android Studio项目,其中添加了一个我称为的Java库模块core。我的三个Gradle构建文件如下所示。

项目/ build.gradle

buildscript {
    ext.kotlin_version = '1.2.40'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

核心/ build.gradle

apply plugin: 'java-library'
apply plugin: 'kotlin'

dependencies { 
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7"
    ...
}

app / build.gradle

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android { ... }

dependencies {
    implementation project(':core')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    implementation 'com.android.support:appcompat-v7:27.1.1'

    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    testImplementation 'junit:junit:4.12'
}

我的问题是,在core/build.gradle中,kotlin-stdlib-jdk7行是给我的警告Plugin version (1.2.40) is not the same as library version (jdk7-1.2.40)。我尝试将其更改为:

implementation "org.jetbrains.kotlin:kotlin-stdlib"

implementation "org.jetbrains.kotlin:kotlin-stdlib:1.2.40"

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.40"

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

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

但是警告仍然存在。该构建仍然可以成功运行,我知道我可以毫无问题地取消警告并忽略它,但是我真的很想知道为什么会这样以及如何摆脱它。我正在使用Android Studio 3.0.1。有人知道解决方案吗?

Answers:


105

这是Kotlin插件中的错误。我已经在Kotlin问题追踪器中提出了问题。您可以简单地忽略该消息。

编辑:JetBrains将该问题标记为KT-23744的副本“ Kotlin库和Gradle插件版本不同”,对非JVM依赖项的检查为假阳性。


16
AS 3.3.1和kotlin版本1.3.21中仍然存在错误
-Catluc

19
仍然存在于AS3.5和Kotlin1.3.50
soshial

16
仍然存在于AS 4.0和Kotlin 1.3.72中
Bratislav Damnjanovic

51
不过,存在于AS 4.1和科特林1.4.10
Mahyar马利基

28
仍然存在于AS 4.1.1和Kotlin 1.4.20中
Simone

40

Kotlin 1.4开始对默认添加的标准库的依赖:

您不再需要在任何Kotlin Gradle项目(包括多平台项目)中声明对stdlib库的依赖。默认情况下添加依赖项。

自动添加的标准库将是Kotlin Gradle插件的相同版本,因为它们具有相同的版本。

对于特定于平台的源集,使用库的相应特定于平台的变体,而其余部分则添加一个通用的标准库。Kotlin Gradle插件将根据Gradle构建脚本的kotlinOptions.jvmTarget编译器选项选择适当的JVM标准库。


3
太棒了,最好的答案
Gabriel Fernandez
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.