我有一个Android工作室项目,其中我添加了一个Java库模块,我称之为核心。我的三个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'
}

我遇到的问题是,在核心/构建。在gradle中,kotlin-stdlib-jdk7行给我的警告是插件版本(1.2.40)与库版本(jdk7-1.2.40)不相同。我试着把它改成:

实现“org.jetbrains.kotlin: kotlin-stdlib”

实现“org.jetbrains.kotlin: kotlin-stdlib: 1.2.40”

实现“org.jetbrains.kotlin: kotlin-stdlib-jdk7:1.2.40”

实现“org.jetbrains.kotlin: kotlin-stdlib-jdk7: kotlin_version美元”

实现“org.jetbrains.kotlin: kotlin-stdlib-jre7: kotlin_version美元”

但警告依然存在。构建仍然成功地运行,我知道我可以在没有任何问题的情况下抑制警告并忽略它,但我真的想知道为什么会发生这种情况,以及如何摆脱它。我使用的是Android Studio 3.0.1。有人知道怎么解决这个问题吗?


当前回答

在我的案例中,我将所有模块的版本号设置为与app的gradle相同的最新版本,问题就解决了。

其他回答

经过许多天,我已经解决了这个问题 更新kotlin_version到'1.4.32'

在升级kotlin版本后,您可能会面临这个问题,实际上,旧版本仍然在您的缓存中,在这种情况下,您需要执行以下步骤

缓存失效 清洁项目 同步项目与gradle文件

现在你的警告将会消失。

这是Kotlin插件中的一个bug。我在Kotlin问题跟踪器中提交了一个问题。您可以简单地忽略该消息。

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

在我的案例中,我将所有模块的版本号设置为与app的gradle相同的最新版本,问题就解决了。

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

You no longer need to declare a dependency on the stdlib library in any Kotlin Gradle project, including a multiplatform one. The dependency is added by default. The automatically added standard library will be the same version of the Kotlin Gradle plugin, since they have the same versioning. For platform-specific source sets, the corresponding platform-specific variant of the library is used, while a common standard library is added to the rest. The Kotlin Gradle plugin will select the appropriate JVM standard library depending on the kotlinOptions.jvmTarget compiler option of your Gradle build script.

链接到Kotlin Gradle插件文档。