我有一个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。有人知道怎么解决这个问题吗?


当前回答

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

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

现在你的警告将会消失。

其他回答

解,在我的例子中,我去掉了这条线 实现“org.jetbrains.kotlin: kotlin-stdlib-jdk7: kotlin_version美元” 在应用程序级别Gradle和警告消失 正如Kotlin页面所说: 你不再需要在任何Kotlin Gradle项目中声明对stdlib库的依赖,包括一个多平台的项目。该依赖项是默认添加的。

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中使用Firebase时也遇到了同样的问题。 我必须将所有依赖项升级为可用的最新版本。

注意:让你的kotlin-reflect和kotlin-stdlib版本相同。

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

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

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

现在你的警告将会消失。

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