Android Studio在第二次构建后显示Kotlin依赖性警告

时间:2017-12-15 13:19:35

标签: android android-studio android-gradle 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)之后,警告消失了,下一个Rebuild 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 builds上会显示警告。因此,这不仅是我本地设置的问题。即使它只是一个警告,我发布一个包含冲突版本的apk也感觉不舒服。

2 个答案:

答案 0 :(得分:9)

摘要

  1. 您已经修复了更新依赖项的问题,但我会在此回答相关问题。

  2. 您正确配置了项目依赖项并将Kotlin插件更新为1.2。

  3. 这通常就像here一样,但是在Kotlin 1.2中stdlib-jre依赖关系被改为jdk。

  4. 但您的项目取决于Realm版本4.3.1,并且他们已在4.3.2版本中修复此问题。

  5. 您可以通过命令或AS 3.1中的新构建选项卡找到导致问题的依赖项。

  6. 1。添加显式依赖项并更新依赖项

    documentationthis answer.

    中解释了Kotlin标准库的扩展版本
      

    如果您定位JDK 7或JDK 8 ,则可以使用扩展版本的   Kotlin标准库包含额外的扩展名   在新的JDK版本中添加API的函数。

         

    使用以下依赖项之一代替kotlin-stdlib

    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7"
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    
         

    在Kotlin 1.1.x 中,使用kotlin-stdlib-jre7kotlin-stdlib-jre8   代替。

    如果自动分辨率无法正常工作,则更新其他依赖项(请参阅第5点)。

    2。配置Gradle和Kotlin插件更新

    修改您的Gradle配置。为了to build an Android project written in Kotlin

    • 设置kotlin-android gradle插件并将其应用于您的项目。
    • 添加kotlin-stdlib依赖项。
      

    这些操作也可以在IntelliJ IDEA /中自动执行   AS通过调用操作:

         

    工具| Kotlin |在项目中配置Kotlin

    enter image description here

      

    检查Kotlin插件更新:

         

    工具| Kotlin |配置Kotlin插件更新

    enter image description here

    3。在1.2.x版本期间,kotlin-stdlib-jre7重命名为kotlin-stdlib-jdk7

      

    Sirrah于2017年12月27日发表评论here:

         

    在1.2.x版本中,Kotlin stdlib已重命名。请参阅here

         

    旧名称kotlin-stdlib-jre7已更改为kotlin-stdlib-jdk7

         

    realm-librarykotlin-extensions中引用了此库。

    4。 Realm在4.3.2版本

    中更新为Kotlin 1.2
      

    Update Gradle Wrapper to 4.4.1 and Update to Kotlin 1.2   (#5642

         
        
    • 更新Gradle Wrapper并更新至Kotlin 1.2

    •   
    • kotlin-stdlib-jre7 - >科特林-STDLIB-JDK7

    •   

    enter image description here

    5。从AS 3.1

    开始,通过命令或构建选项卡查找冲突依赖项
    ./gradlew -q dependencies app:dependencies --configuration variantDebugCompileClasspath
    

    enter image description here

    从Android Studio 3.1 Beta 1开始,您可以使用新的构建选项卡来查找冲突依赖项:

    enter image description here

    enter image description here

    enter image description here

    在这种情况下,您删除了警告并修复了将Realm版本更新为4.3.2的问题:

    enter image description here

    enter image description here

    考虑到下载订单依赖关系,也可以在Travis-ci版本中检查它:

    enter image description here

答案 1 :(得分:0)

您还可以做的就是简单地删除(或移动)多余的版本文件夹。 例如,删除下面的两个文件夹之一,然后重新构建,这样就可以摆脱kotlin运行时警告。

〜/ .gradle / caches / modules-2 / files-2.1 / org.jetbrains.kotlin / kotlin-stdlib-jdk7 / 1.2.10

〜/ .gradle / caches / modules-2 / files-2.1 / org.jetbrains.kotlin / kotlin-stdlib / 1.2.10