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

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

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

[build.gradle(模块)]

dependencies {
    implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.5.10'
    implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.10'
    ...
}

我的项目自动添加

(implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.10') 

到项目生成文件。在将实现移动到模块文件,并删除

(implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.5.10')

警告消失了。 'stdlib'需要匹配模块文件中的'stdlib-jdk'。

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

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

现在你的警告将会消失。

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