Migra al complemento de la biblioteca de Android-KMP
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
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, y este no se beneficiará de las futuras actualizaciones y mejoras.
El complemento 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 de android de nivel superior.
Compilación de Java opcional: La compilación de Java está inhabilitada de forma predeterminada. Usa withJava() en el bloque androidLibrary 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, como androidAndroidTest. 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 bloque plugins con apply 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 fileplugins{alias(libs.plugins.kotlin.multiplatform)applyfalse// Add the followingalias(libs.plugins.android.kotlin.multiplatform.library)applyfalse}
Groovy
// Root build.gradle fileplugins{alias(libs.plugins.kotlin.multiplatform)applyfalse// Add the followingalias(libs.plugins.android.kotlin.multiplatform.library)applyfalse}
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 bloque plugins:
Kotlin
// Module-specific build.gradle.kts fileplugins{alias(libs.plugins.kotlin.multiplatform)// Add the followingalias(libs.plugins.android.kotlin.multiplatform.library)}
Groovy
// Module-specific build.gradle fileplugins{alias(libs.plugins.kotlin.multiplatform)// Add the followingalias(libs.plugins.android.kotlin.multiplatform.library)}
Configura el destino de KMP de Android. Configura el bloque Kotlin Multiplatform (kotlin) para definir el destino de Android. Dentro del bloque kotlin, especifica el destino de Android con androidLibrary:
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-08-21 (UTC)
[null,null,["Última actualización: 2025-08-21 (UTC)"],[],[],null,["# Migrate to the Android-KMP library plugin\n\nKotlin Multiplatform has a Gradle plugin to configure the\n[library module](/studio/projects/android-library).\n\nThe `com.android.kotlin.multiplatform.library` plugin is the official\nreplacement for the previous method of adding Android targets to KMP libraries\nusing the regular Android library Gradle plugin (`com.android.library`).\n\nThe previous approach is now deprecated in favor of the plugin, also referred to\nas the **Android-KMP plugin** . Continuing to use the `com.android.library`\nplugin for KMP will no longer be supported by JetBrains and won't benefit from\nfuture updates and improvements.\n| **Note:** Configuring the Android **application** module using `com.android.application` doesn't change.\n\nTo migrate to this plugin, refer to the [Apply the Android-KMP plugin](#apply)\nsection.\n\nKey features and differences\n----------------------------\n\nThe Android-KMP plugin is tailored specifically for KMP projects and differs\nfrom the standard `com.android.library` plugin in several key aspects:\n\n- **Single variant architecture:** The plugin uses a single variant, removing\n support for product flavors and build types, which simplifies configuration\n and enhances build performance.\n\n- **Optimized for KMP:** The plugin is designed for KMP libraries, focusing on\n shared Kotlin code and interoperability, omitting support for\n Android-specific native builds, AIDL, and RenderScript.\n\n- **Tests disabled by default:** Both unit and device (instrumentation) tests\n are disabled by default to enhance build speed. You can enable them if\n required.\n\n- **No top-Level Android extension:** Configuration is handled with an\n `androidLibrary` block within the Gradle KMP DSL, maintaining a consistent\n KMP project structure. There's no top-level `android` extension block.\n\n- **Opt-in Java compilation:** Java compilation is disabled by default. Use\n `withJava()` in the `androidLibrary` block to enable it. This improves build\n times when Java compilation is not needed.\n\nBenefits of the Android-KMP library plugin\n------------------------------------------\n\nThe Android-KMP plugin provides the following benefits for KMP projects:\n\n- **Improved build performance and stability:** It's engineered for optimized\n build speeds and enhanced stability within KMP projects. It's focus on KMP\n workflows contribute to a more efficient and reliable build process.\n\n- **Enhanced IDE integration:** It provides better code completion,\n navigation, debugging, and overall developer experience when working with\n KMP Android libraries.\n\n- **Simplified project configuration:** The plugin simplifies configuration\n for KMP projects by removing Android-specific complexities like build\n variants. This leads to cleaner and more maintainable build files.\n Previously, using the `com.android.library` plugin in KMP project could\n create confusing source set names, such as `androidAndroidTest`. This naming\n convention was less intuitive for developers familiar with standard KMP\n project structures.\n\nApply the Android-KMP plugin to an existing module\n--------------------------------------------------\n\nTo apply the Android-KMP plugin to an existing KMP library module, follow these\nsteps:\n\n1. **Declare plugins in version catalog.** Open the version catalog TOML file\n (usually `gradle/libs.versions.toml`) and add the plugin definitions\n section:\n\n # To check the version number of the latest Kotlin release, go to\n # https://kotlinlang.org/docs/releases.html\n\n [versions]\n androidGradlePlugin = \"8.12.0\"\n kotlin = \"\u003cvar translate=\"no\"\u003eKOTLIN_VERSION\u003c/var\u003e\"\n\n [plugins]\n kotlin-multiplatform = { id = \"org.jetbrains.kotlin.multiplatform\", version.ref = \"kotlin\" }\n android-kotlin-multiplatform-library = { id = \"com.android.kotlin.multiplatform.library\", version.ref = \"androidGradlePlugin\" }\n\n2. **Apply the plugin declaration in root build file.** Open the\n `build.gradle.kts` file located in the root directory of your project. Add\n the plugin aliases to the `plugins` block using `apply false`. This makes\n the plugin aliases available to all subprojects without applying the plugin\n logic to the root project itself.\n\n ### Kotlin\n\n ```kotlin\n // Root build.gradle.kts file\n\n plugins {\n alias(libs.plugins.kotlin.multiplatform) apply false\n\n // Add the following\n alias(libs.plugins.android.kotlin.multiplatform.library) apply false\n }\n ```\n\n ### Groovy\n\n ```groovy\n // Root build.gradle file\n\n plugins {\n alias(libs.plugins.kotlin.multiplatform) apply false\n\n // Add the following\n alias(libs.plugins.android.kotlin.multiplatform.library) apply false\n }\n ```\n3. **Apply the plugin in a KMP library module build file.** Open the\n `build.gradle.kts` file in your KMP library module and apply the plugin at\n the top of your file within the `plugins` block:\n\n ### Kotlin\n\n ```kotlin\n // Module-specific build.gradle.kts file\n\n plugins {\n alias(libs.plugins.kotlin.multiplatform)\n\n // Add the following\n alias(libs.plugins.android.kotlin.multiplatform.library)\n }\n ```\n\n ### Groovy\n\n ```groovy\n // Module-specific build.gradle file\n\n plugins {\n alias(libs.plugins.kotlin.multiplatform)\n\n // Add the following\n alias(libs.plugins.android.kotlin.multiplatform.library)\n }\n ```\n4. **Configure Android KMP target.** Configure the Kotlin Multiplatform block\n (`kotlin`) to define the Android target. Within the `kotlin` block, specify\n the Android target using `androidLibrary`:\n\n ### Kotlin\n\n ```kotlin\n kotlin {\n androidLibrary {\n namespace = \"com.example.kmpfirstlib\"\n compileSdk = 33\n minSdk = 24\n\n withJava() // enable java compilation support\n withHostTestBuilder {}.configure {}\n withDeviceTestBuilder {\n sourceSetTreeName = \"test\"\n }\n\n compilations.configureEach {\n compilerOptions.configure {\n jvmTarget.set(\n org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8\n )\n }\n }\n }\n\n sourceSets {\n androidMain {\n dependencies {\n // Add Android-specific dependencies here\n }\n }\n getByName(\"androidHostTest\") {\n dependencies {\n }\n }\n\n getByName(\"androidDeviceTest\") {\n dependencies {\n }\n }\n }\n // ... other targets (JVM, iOS, etc.) ...\n }\n ```\n\n ### Groovy\n\n ```groovy\n kotlin {\n androidLibrary {\n namespace = \"com.example.kmpfirstlib\"\n compileSdk = 33\n minSdk = 24\n\n withJava() // enable java compilation support\n withHostTestBuilder {}.configure {}\n withDeviceTestBuilder {\n it.sourceSetTreeName = \"test\"\n }\n\n compilations.configureEach {\n compilerOptions.options.jvmTarget.set(\n org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8\n )\n }\n }\n\n sourceSets {\n androidMain {\n dependencies {\n }\n }\n androidHostTest {\n dependencies {\n }\n }\n androidDeviceTest {\n dependencies {\n }\n }\n }\n // ... other targets (JVM, iOS, etc.) ...\n }\n ```\n5. **Apply changes.** After applying the plugin and configuring the `kotlin`\n block, sync your Gradle project to apply the changes.\n\nRecommended for you\n-------------------\n\n- Note: link text is displayed when JavaScript is off\n- [Set up your environment](/kotlin/multiplatform/setup)\n- [Add KMP module to a project](/kotlin/multiplatform/migrate)"]]