我有一个Android Studio项目,在其中添加了一个Java库模块,我将其命名为core
。我的三个Gradle构建文件如下所示。
项目/构建.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
}
核心/构建级别
apply plugin: 'java-library'
apply plugin: 'kotlin'
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7"
...
}
应用程序/构建.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。有人知道解决方案吗?
9条答案
按热度按时间a6b3iqyw1#
从Kotlin1.4开始默认添加对标准库的依赖:
您不再需要在任何KotlinGradle项目(包括多平台项目)中声明对stdlib库的依赖关系。
自动添加的标准库将与KotlinGradle插件版本相同,因为它们具有相同的版本控制。
对于特定于平台的源集,将使用库的相应特定于平台的变体,同时向其余部分添加通用标准库。KotlinGradle插件将根据Gradle构建脚本的kotlinOptions.jvmTarget编译器选项选择适当的JVM标准库。
链接到KotlinGradle插件文档。
nbnkbykc2#
这是Kotlin插件中的一个bug。我已经在Kotlin问题跟踪器中归档了an issue。你可以简单地忽略这个消息。
编辑:JetBrains将此问题标记为KT-23744“Kotlin库和Gradle插件版本不同”的重复问题,非JVM依赖项检查出现误报。
zf9nrax13#
解决方案,在我的例子中,我去掉了应用级别Gradle中的行实现“org.jetbrains.Kotlin:kotlin-stdlib-jdk 7:$kotlin_version”,警告也随之消失正如Kotlin页面所示:“您不再需要在任何KotlinGradle项目(包括多平台项目)中声明对stdlib库的依赖关系。
goqiplq24#
升级Kotlin版本后,您可能会遇到这种情况,实际上,旧版本仍然在您的缓存中,在这种情况下,您需要执行以下步骤
1.使缓存无效
1.清洁项目
1.将项目与Gradle文件同步
现在你的警告将消失。
e4yzc0pl5#
[构建版本.gradle(模块)]
我的项目已自动添加
将实现移动到模块文件并移除
警告消失。“stdlib”需要与模块文件中的“stdlib-jdk”匹配。
qcuzuvrc6#
我在使用Firebase和Kotlin时也遇到了同样的问题。我不得不用它们可用的最新版本升级所有的依赖项。
注意:请确保kotlin-reflect和kotlin-stdlib版本相同。
7ivaypg97#
多天后我解决了这个问题将Kotlin_version更新为“1.4.32”
gg0vcinb8#
在我的例子中,我将所有模块的版本号设置为与
app
的gradle相同的最新版本,问题就解决了。lxkprmvk9#
这是因为
kotlin-stdlib
,您可以覆盖app/build.gradle中解析jdk版本的方式查看this answer了解更多详细信息。