我有一个Android工作室项目,我在其中添加了一个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"
...
}
应用程序/的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。有谁知道解决这个问题?
答案 0 :(得分:33)
这是Kotlin插件中的一个错误。我已经在Kotlin问题跟踪器中提交了an issue。您可以忽略该消息。
编辑:JetBrains将此问题标记为KT-23744" Kotlin库和Gradle插件版本的副本不同"检查非JVM依赖关系的误报"。
答案 1 :(得分:24)
从Kotlin 1.4对默认添加的标准库的依赖开始:
您不再需要在任何Kotlin Gradle项目(包括多平台项目)中声明对stdlib库的依赖。依赖项是默认添加的。
自动添加的标准库将具有相同版本的Kotlin Gradle插件。
对于特定于平台的源集,使用库的相应特定于平台的变体,而其余部分则添加一个通用的标准库。 Kotlin Gradle插件将根据您的Gradle构建脚本的kotlinOptions.jvmTarget编译器选项选择适当的JVM标准库。
答案 2 :(得分:0)
我在将 Firebase 与 Kotlin 结合使用时遇到了同样的问题。 我必须使用最新版本升级所有依赖项。
注意:让您的 kotlin-reflect 和 kotlin-stdlib 版本相同。
答案 3 :(得分:0)
[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' 匹配。
答案 4 :(得分:0)
很多天后我解决了这个问题 将 kotlin_version 更新为 '1.4.32'
答案 5 :(得分:0)
升级kotlin版本后你可能会遇到这个问题,其实旧版本还在你的缓存中,在这种情况下,你需要做以下步骤
现在您的警告将消失。