Kotlin Multiplatform tiene un complemento de Gradle para configurar el módulo de biblioteca.
El complemento com.android.kotlin.multiplatform.library
es el reemplazo oficial del método anterior para agregar destinos de Android a las bibliotecas de KMP con el complemento de Gradle de biblioteca de Android normal (com.android.library
).
El enfoque anterior ahora está en desuso en favor del complemento, también conocido como el complemento de Android-KMP. JetBrains ya no admitirá el uso del complemento com.android.library
para KMP, por lo que no se beneficiará de las futuras actualizaciones y mejoras.
Para migrar a este complemento, consulta la sección Aplica el complemento de Android-KMP.
Funciones y diferencias clave
El complemento de Android-KMP está diseñado específicamente para proyectos de KMP y difiere del complemento com.android.library
estándar en varios aspectos clave:
Arquitectura de una sola variante: El complemento usa una sola variante, lo que quita la compatibilidad con las variantes de producto y los tipos de compilación, lo que simplifica la configuración y mejora el rendimiento de la compilación.
Optimizado para KMP: El complemento está diseñado para bibliotecas de KMP y se enfoca en el código Kotlin compartido y la interoperabilidad, y omite la compatibilidad con las compilaciones nativas específicas de Android, AIDL y RenderScript.
Pruebas inhabilitadas de forma predeterminada: Tanto las pruebas de unidades como las de dispositivos (instrumentación) están inhabilitadas de forma predeterminada para mejorar la velocidad de compilación. Puedes habilitarlos si es necesario.
Sin extensión de Android de nivel superior: La configuración se controla con un bloque
androidLibrary
dentro del DSL de KMP de Gradle, lo que mantiene una estructura de proyecto de KMP coherente. No hay un bloqueo de extensión deandroid
de nivel superior.Compilación de Java opcional: La compilación de Java está inhabilitada de forma predeterminada. Usa
withJava()
en el bloqueandroidLibrary
para habilitarlo. Esto mejora los tiempos de compilación cuando no se necesita la compilación de Java.
Beneficios del complemento de la biblioteca de Android-KMP
El complemento de Android-KMP proporciona los siguientes beneficios para los proyectos de KMP:
Mejoras en el rendimiento y la estabilidad de la compilación: Se diseñó para optimizar las velocidades de compilación y mejorar la estabilidad en los proyectos de KMP. Su enfoque en los flujos de trabajo de KMP contribuye a un proceso de compilación más eficiente y confiable.
Integración mejorada del IDE: Proporciona mejores funciones de autocompletado de código, navegación, depuración y experiencia general del desarrollador cuando se trabaja con bibliotecas de KMP para Android.
Configuración simplificada del proyecto: El complemento simplifica la configuración de los proyectos de KMP, ya que quita las complejidades específicas de Android, como las variantes de compilación. Esto genera archivos de compilación más limpios y fáciles de mantener. Anteriormente, usar el complemento
com.android.library
en un proyecto de KMP podía crear nombres de conjuntos de fuentes confusos, comoandroidAndroidTest
. Esta convención de nomenclatura era menos intuitiva para los desarrolladores familiarizados con las estructuras de proyectos de KMP estándar.
Aplica el complemento Android-KMP a un módulo existente
Para aplicar el complemento Android-KMP a un módulo de biblioteca de KMP existente, sigue estos pasos:
Declara complementos en el catálogo de versiones. Abre el archivo TOML del catálogo de versiones (generalmente
gradle/libs.versions.toml
) y agrega la sección de definiciones de complementos:# To check the version number of the latest Kotlin release, go to # https://kotlinlang.org/docs/releases.html [versions] androidGradlePlugin = "8.12.0" kotlin = "KOTLIN_VERSION" [plugins] kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } android-kotlin-multiplatform-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "androidGradlePlugin" }
Aplica la declaración del complemento en el archivo de compilación raíz. Abre el archivo
build.gradle.kts
ubicado en el directorio raíz de tu proyecto. Agrega los alias del complemento al bloqueplugins
conapply false
. Esto hace que los alias del complemento estén disponibles para todos los subproyectos sin aplicar la lógica del complemento al proyecto raíz.Kotlin
// Root build.gradle.kts file plugins { alias(libs.plugins.kotlin.multiplatform) apply false // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) apply false }
Groovy
// Root build.gradle file plugins { alias(libs.plugins.kotlin.multiplatform) apply false // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) apply false }
Aplica el complemento en un archivo de compilación de módulo de biblioteca de KMP. Abre el archivo
build.gradle.kts
en tu módulo de biblioteca de KMP y aplica el complemento en la parte superior del archivo dentro del bloqueplugins
:Kotlin
// Module-specific build.gradle.kts file plugins { alias(libs.plugins.kotlin.multiplatform) // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) }
Groovy
// Module-specific build.gradle file plugins { alias(libs.plugins.kotlin.multiplatform) // Add the following alias(libs.plugins.android.kotlin.multiplatform.library) }
Configura el destino de KMP de Android. Configura el bloque de Kotlin Multiplataforma (
kotlin
) para definir el destino de Android. Dentro del bloquekotlin
, especifica el destino de Android conandroidLibrary
:Kotlin
kotlin { androidLibrary { namespace = "com.example.kmpfirstlib" compileSdk = 33 minSdk = 24 withJava() // enable java compilation support withHostTestBuilder {}.configure {} withDeviceTestBuilder { sourceSetTreeName = "test" } compilations.configureEach { compilerOptions.configure { jvmTarget.set( org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8 ) } } } sourceSets { androidMain { dependencies { // Add Android-specific dependencies here } } getByName("androidHostTest") { dependencies { } } getByName("androidDeviceTest") { dependencies { } } } // ... other targets (JVM, iOS, etc.) ... }
Groovy
kotlin { androidLibrary { namespace = "com.example.kmpfirstlib" compileSdk = 33 minSdk = 24 withJava() // enable java compilation support withHostTestBuilder {}.configure {} withDeviceTestBuilder { it.sourceSetTreeName = "test" } compilations.configureEach { compilerOptions.options.jvmTarget.set( org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8 ) } } sourceSets { androidMain { dependencies { } } androidHostTest { dependencies { } } androidDeviceTest { dependencies { } } } // ... other targets (JVM, iOS, etc.) ... }
Aplica los cambios. Después de aplicar el complemento y configurar el bloque
kotlin
, sincroniza tu proyecto de Gradle para aplicar los cambios.
Recomendaciones para ti
- Nota: El texto del vínculo se muestra cuando JavaScript está desactivado
- Configura tu entorno
- Agrega un módulo de KMP a un proyecto