Android Studio在第二次构建后显示Kotlin依赖警告
我刚刚在Android项目中启用了Kotlin,我偶然发现了一个警告。 在第二次构建之后(Build – > Rebuild Project),这个警告显示在Messages:
Warning:Runtime JAR files in the classpath should have the same version. These files were found in the classpath: ~/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.2.10/85fe1811f3e586d0cc53aba1394d8089f1862215/kotlin-stdlib-jdk8-1.2.10.jar (version 1.2) ~/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-reflect/1.2.10/19bc012f8c4cd6b705bd6512263777cc19bcf259/kotlin-reflect-1.2.10.jar (version 1.2) /Applications/Android Studio.app/Contents/gradle/m2repository/org/jetbrains/kotlin/kotlin-stdlib-jre7/1.1.51/kotlin-stdlib-jre7-1.1.51.jar (version 1.1) ~/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.2.10/cfe8b616b3bf0811ef70863c86b745a2e767a66e/kotlin-stdlib-jdk7-1.2.10.jar (version 1.2) ~/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.2.10/b9bf650516989595a5390e5a54181e16347208ac/kotlin-stdlib-1.2.10.jar (version 1.2)
看起来第二个版本包含来自缓存的过时的kotlin-stdlib-jre7-1.1.51.jar
。 清洁构建(Build – > Clean Project)后,警告消失,下一个重建项目再次启动。
我正在使用Android Studio 3.0.1,并且明确地将Kotlin依赖包括在版本中:
的build.gradle
buildscript { ext { // shared build properties kotlin_version = '1.2.10' buildToolsVersion = '27.0.2' minSdkVersion = 15 targetSdkVersion = 27 compileSdkVersion = 27 } repositories { jcenter() google() } dependencies { classpath "com.android.tools.build:gradle:3.0.1" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}" } }
应用程序/的build.gradle
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlin_version}" implementation "org.jetbrains.kotlin:kotlin-reflect:${kotlin_version}" [...] }
同样在我们的Travis版本上显示警告。 因此,这不仅是我的本地设置问题。 即使这只是一个警告,我发布一个包含冲突版本的apk也不舒服。
概要
-
你已经修复它更新你的依赖关系,但我会在这里回答链接一个相关的问题。
-
您正确配置了您的项目依赖关系,并将Kotlin插件更新到1.2。
-
这通常就像这里一样,但是在Kotlin 1.2中,stdlib-jre的依赖关系被改为jdk。
-
但是你的项目取决于Realm版本4.3.1,他们在4.3.2版本中修正了这个问题。
-
您可以通过命令或AS 3.1中的新建版本标签find导致问题的依赖项。
1.添加显式依赖项并更新依赖项
Kotlin标准库的扩展版本在文档和此答案中进行了解释。
如果您的目标是JDK 7或JDK 8 ,则可以使用Kotlin标准库的扩展版本,其中包含用于添加到新JDK版本中的API的附加扩展function。
使用下列依赖项之一而不是
kotlin-stdlib
:compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7" compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
在Kotlin 1.1.x中 ,改用
kotlin-stdlib-jre7
和kotlin-stdlib-jre8
。
如果自动解决方法无法正常工作, 请更新其他依赖项( 请参阅第5点 )。
2.配置Gradle和Kotlin插件更新
修改你的Gradle配置。 为了构建一个用Kotlin编写的Android项目 :
- 设置
kotlin-android
gradle插件并将其应用到您的项目中。 - 添加
kotlin-stdlib
依赖项。
这些动作也可以通过调用以下动作在IntelliJ IDEA / AS中自动执行:
工具| Kotlin | 在Project中配置Kotlin
检查Kotlin插件更新:
工具| Kotlin | 配置Kotlin插件更新
3.在1.2.x版本中,kotlin-stdlib-jre7重命名为kotlin-stdlib-jdk7
Sirrah在2017年12月27日发表评论:
Kotlin stdlib在1.2.x版本中被重命名。 看到这里 。
旧的名字
kotlin-stdlib-jre7
被改为kotlin-stdlib-jdk7
。这个库在
realm-library
和kotlin-extensions
引用。
4.在4.3.2版本中,Realm更新为Kotlin 1.2
将Gradle Wrapper更新到4.4.1并更新到Kotlin 1.2 ( #5642 )
更新Gradle Wrapper并更新到Kotlin 1.2
kotlin-stdlib-jre7 – > kotlin-stdlib-jdk7
5.通过命令查找冲突依赖关系,或从AS 3.1开始生成选项卡
./gradlew -q dependencies app:dependencies --configuration variantDebugCompileClasspath
从Android Studio 3.1 Beta 1开始,您可以使用新版本选项卡来查找冲突的依赖关系:
在这种情况下,您删除了警告并修复了将Realm版本更新为4.3.2的问题:
考虑到下载的顺序依赖关系,也可以在Travis-ci版本中检查它:
- Android Studio执行失败的任务compilefreeDebugKotlin
- UnsupportedOperationException“android”命令不再包含在SDK中
- 无法使用kotlin库
- 如何添加RecyclerView依赖 – gradle 3
- Gradle在干净的版本上显示错误消息,没有明确的解释
- 如何将Android的Java第三方库转换为kotlin?
- 无法转换为org.jetbrains.kotlin.java.model.types.JeClassInitializerExecutableTypeMirror
- 不能在Kotlinunit testing(ExecutionException,Aapt2Exception)
- 无法find参数org.gradle.api.Project的方法android()