Advertencia “La versión del complemento de Kotlin no es la misma que la versión de la biblioteca” (¡pero lo es!)

4 minutos de lectura

Tengo un proyecto de estudio de Android en el que he agregado un módulo de biblioteca Java, al que llamo core. Mis tres archivos de compilación de Gradle se ven así.

proyecto/construir.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
}

núcleo/construir.gradle

apply plugin: 'java-library'
apply plugin: 'kotlin'

dependencies { 
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7"
    ...
}

aplicación/construir.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'
}

El problema que tengo es que en core/build.gradlela kotlin-stdlib-jdk7 la línea me está dando la advertencia Plugin version (1.2.40) is not the same as library version (jdk7-1.2.40). He intentado cambiarlo a:

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"

Pero la advertencia sigue ahí. La compilación aún se ejecuta correctamente y sé que puedo suprimir la advertencia sin ningún problema e ignorarla, pero realmente quiero saber por qué sucede esto y cómo puedo deshacerme de ella. Estoy usando Android Studio 3.0.1. ¿Alguien sabe de una solución a esto?

avatar de usuario
Spatz

Empezando desde Kotlin 1.4 dependencia de la biblioteca estándar añadida por defecto:

Ya no necesita declarar una dependencia en la biblioteca stdlib en ningún proyecto de Kotlin Gradle, incluido uno multiplataforma. La dependencia se agrega de forma predeterminada.

La biblioteca estándar agregada automáticamente será la misma versión del complemento Kotlin Gradle, ya que tienen el mismo control de versiones.

Para los conjuntos de fuentes específicos de la plataforma, se utiliza la variante específica de la plataforma correspondiente de la biblioteca, mientras que se agrega una biblioteca estándar común al resto. El complemento Kotlin Gradle seleccionará la biblioteca estándar de JVM adecuada según la opción del compilador kotlinOptions.jvmTarget de su secuencia de comandos de compilación de Gradle.

Enlace a la documentación del complemento Kotlin Gradle.

  • esta es la respuesta correcta, por ejemplo, no necesita implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" más tiempo

    – SqAR.org

    11 de enero de 2021 a las 23:48

  • Entonces, el error está en la plantilla de Android Studio para una nueva biblioteca o proyecto, trae esta dependencia como predeterminada.

    – Helton Isaac

    17 de febrero de 2021 a las 11:37

  • @Spatz: ¿Podría proporcionar declaraciones/enlaces oficiales de Jetbrains para el cambio anterior?

    – SVK

    17 de marzo de 2021 a las 3:24

  • @SVK Lanzamiento de Kotlin 1.4.0-RC

    – Spatz

    17 de marzo de 2021 a las 4:18

avatar de usuario
yolé

Este es un error en el complemento de Kotlin. he presentado un problema en el rastreador de problemas de Kotlin. Simplemente puede ignorar el mensaje.

EDITAR: JetBrains marcó el problema como un duplicado de KT-23744 “Las versiones de la biblioteca Kotlin y el complemento Gradle son diferentes” inspección falsa positiva para dependencias que no son JVM”.

  • Sigue siendo un error en AS 3.3.1 y kotlin versión 1.3.21

    – Catluc

    8 de febrero de 2019 a las 7:56

  • Aún así, existe en AS 3.5 y Kotlin 1.3.50

    – soshial

    6 sep 2019 a las 14:31

  • Aún así, existe en AS 4.0 y Kotlin 1.3.72

    –Bratislav Damnjanovic

    12 de junio de 2020 a las 11:50

  • Aún así, existe en AS 4.1 y Kotlin 1.4.10

    – Mahyar Maleki

    13 oct 2020 a las 14:13

  • Aún así, existe en AS 4.1.1 y Kotlin 1.4.20

    – Simona

    24 de noviembre de 2020 a las 8:33

avatar de usuario
Lucas

Solución, en mi caso, me deshice de la línea deployment”org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version” en el nivel de la aplicación Gradle y la advertencia desaparece Como dice la página de Kotlin: “Ya no necesitas declarar una dependencia en la biblioteca stdlib en cualquier proyecto Kotlin Gradle, incluido uno multiplataforma.La dependencia se agrega de forma predeterminada.

The automatically added standard library will be the same version of the Kotlin Gradle plugin, since they have the same versioning.

For platform-specific source sets, the corresponding platform-specific variant of the library is used, while a common standard library is added to the rest. The Kotlin Gradle plugin will select the appropriate JVM standard library depending on the kotlinOptions.jvmTarget compiler option of your Gradle build script."

[build.gradle(Module)]

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

Mi proyecto agregado automáticamente

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

al archivo de compilación del proyecto. Después de mover la implementación al archivo del módulo y eliminar

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

la advertencia se fue. El ‘stdlib’ debe coincidir con el ‘stdlib-jdk’ en el archivo del módulo.

Enfrenté el mismo problema al usar Firebase con Kotlin. Tuve que actualizar todas las dependencias con su última versión disponible.

Nota: tenga las mismas versiones de kotlin-reflect y kotlin-stdlib.

avatar de usuario
GURPREET SINGH

después de muchos días resolví el problema Actualice kotlin_version a ‘1.4.32’

avatar de usuario
Sayed Abolfazl Fatemi

En mi caso, configuré el número de versión para todos los módulos de la misma manera que gradle de app como última versión, y problema resuelto.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad