El complemento de Gradle com.android.kotlin.multiplatform.library es la herramienta compatible oficialmente
para agregar un destino de Android a un módulo de biblioteca de Kotlin Multiplatform (KMP)
. Simplifica la configuración del proyecto, mejora el rendimiento de la compilación y ofrece una mejor integración con Android Studio.
El uso del complemento com.android.library para el desarrollo de KMP depende de las APIs del complemento de Android
para Gradle que dejaron de estar disponibles y requieren la habilitación en el complemento de Android
para Gradle 9.0 y versiones posteriores (cuarto trimestre de 2025). Se espera que estas APIs
se quiten en el complemento de Android para Gradle 10.0
(segunda mitad de 2026).
Para aplicar este complemento, consulta la sección Aplica el complemento de Android-KMP. Si necesitas migrar desde las APIs heredadas, consulta la Guía de migración.
Para obtener ayuda con la migración de AGP 9.0 y versiones posteriores, puedes usar la habilidad del agente creada por JetBrains para apps de KMP. Para obtener más información sobre el uso de habilidades en Android Studio, consulta Extiende el modo de agente con habilidades. Ten en cuenta que los resultados de la IA no son del todo predecibles.
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 productos 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, se enfoca en el código Kotlin compartido y la interoperabilidad, y omite la compatibilidad con compilaciones nativas específicas de Android, AIDL y RenderScript.
Pruebas inhabilitadas de forma predeterminada: Las pruebas de unidades y de dispositivos (instrumentación) están inhabilitadas de forma predeterminada para mejorar la velocidad de compilación. Puedes habilitarlas si es necesario.
Sin extensión de Android de nivel superior: La configuración se controla con un bloque
androiddentro de la DSL de KMP de Gradle, lo que mantiene una estructura de proyecto de KMP coherente. No hay un bloque de extensiónandroidde nivel superior.Compilación de Java habilitada: La compilación de Java está inhabilitada de forma predeterminada. Usa
withJava()en el bloqueandroidpara habilitarla. Esto mejora los tiempos de compilación cuando no se necesita la compilación de Java.
Beneficios del complemento de biblioteca de Android-KMP
El complemento de Android-KMP proporciona los siguientes beneficios para los proyectos de KMP:
Rendimiento y estabilidad de compilación mejorados: Está diseñado para optimizar las velocidades de compilación y mejorar la estabilidad dentro de 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 una mejor finalización de código, navegación, depuración y experiencia general del desarrollador cuando se trabaja con bibliotecas de KMP para Android.
Configuración de proyecto simplificada: El complemento simplifica la configuración de los proyectos de KMP quitando las complejidades específicas de Android, como las variantes de compilación. Esto da como resultado archivos de compilación más limpios y fáciles de mantener. Anteriormente, el uso del complemento
com.android.libraryen el proyecto de KMP podía crear nombres de conjuntos de orígenes confusos, comoandroidAndroidTest. Esta convención de nombres era menos intuitiva para los desarrolladores familiarizados con las estructuras de proyectos de KMP estándar.
Soluciones alternativas para funciones no compatibles
En comparación con la integración de KMP con el complemento com.android.library, faltan algunas funciones en el complemento com.android.kotlin.multiplatform.library. Estas son las soluciones alternativas para las funciones no compatibles:
Variantes de compilación
No se admiten los tipos de compilación ni las variantes de productos. Esto se debe a que el nuevo complemento usa una arquitectura de una sola variante, lo que simplifica la configuración y mejora el rendimiento de la compilación.
Si necesitas variantes de compilación, te recomendamos que crees un módulo de biblioteca de Android independiente por separado con el complemento
com.android.library, configures los tipos de compilación y las variantes de productos dentro de ese módulo y, luego, lo consumas como una dependencia de proyecto estándar del conjunto de orígenesandroidMainde tu biblioteca de Kotlin Multiplatform. Para obtener más detalles, consulta Crea una biblioteca de Android y Configura variantes de compilación.Vinculación de datos y vinculación de vistas
Estas son funciones del framework de IU específicas de Android que están estrechamente vinculadas al sistema de vistas de Android y a los diseños XML. En el nuevo complemento de biblioteca de Android-KMP, te recomendamos que controles la IU con un framework multiplataforma como Compose Multiplatform. La vinculación de datos y la vinculación de vistas se consideran detalles de implementación de una app para Android final, no una biblioteca compartible.
Compatibilidad con compilación nativa
El nuevo complemento se enfoca en producir un AAR estándar para el destino de Android. La integración de código nativo en Kotlin Multiplatform se controla directamente con los propios destinos nativos de KMP (como
androidNativeArm64yandroidNativeX86) y sus capacidades de interoperabilidad de C. Si necesitas incluir código nativo de C/C++, debes definirlo como parte de un conjunto de orígenes común o nativo y configurar la interoperabilidad de C dentro del bloquekotlin, en lugar de usar el mecanismoexternalNativeBuildespecífico de Android.Como alternativa, si necesitas compatibilidad con compilación nativa a través de
externalNativeBuild, te recomendamos que crees un módulocom.android.libraryindependiente por separado en el que puedas integrar código nativo y consumir esa biblioteca independiente del conjunto de orígenesandroidMaindel proyecto de biblioteca de Kotlin Multiplatform. Para obtener más detalles, consulta Crea una biblioteca de Android y Agrega código C y C++ a tu proyecto.Clase
BuildConfigLa función
BuildConfiges más útil en entornos de varias variantes. Dado que el nuevo complemento de biblioteca de Kotlin Multiplatform es independiente de la variante y no admite tipos de compilación ni variantes de productos, esta función no se implementa. Como alternativa, te recomendamos que uses el complementoBuildKonfigo soluciones similares de la comunidad para generar metadatos para todos los destinos.
Requisitos previos
Para usar el complemento com.android.kotlin.multiplatform.library, tu proyecto debe estar configurado con las siguientes versiones mínimas o superiores:
- Complemento de Android para Gradle (AGP): 8.10.0
- Complemento de Gradle para Kotlin (KGP): 2.0.0
Aplica el complemento de Android-KMP a un módulo existente
Para aplicar el complemento de 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 (por lo general,
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 = "9.2.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.ktsubicado en el directorio raíz de tu proyecto. Agrega los alias del complemento al bloquepluginsconapply 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.ktsen 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 para Android. Configura el bloque de Kotlin Multiplatform (
kotlin) para definir el destino de Android. Dentro del bloquekotlin, especifica el destino de Android conandroid:Kotlin
kotlin { android { namespace = "com.example.kmpfirstlib" compileSdk = 33 minSdk = 24 withJava() // enable java compilation support withHostTestBuilder {}.configure {} withDeviceTestBuilder { sourceSetTreeName = "test" } 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 { android { namespace = "com.example.kmpfirstlib" compileSdk = 33 minSdk = 24 withJava() // enable java compilation support withHostTestBuilder {}.configure {} withDeviceTestBuilder { it.sourceSetTreeName = "test" } 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.
Migra desde el complemento heredado
Esta guía te ayuda a migrar desde el complemento com.android.library heredado al complemento com.android.kotlin.multiplatform.library.
1. Cómo mover orígenes
El complemento heredado te permitía usar los conjuntos de orígenes src/main, src/test y src/androidTest, además de src/androidMain, src/androidHostTest y src/androidDeviceTest. El nuevo complemento solo usa los últimos directorios de origen, por lo que deberás mover los orígenes de src/main a src/androidMain, de src/test a src/androidHostTest y de src/androidTest a src/androidDeviceTest.
2. Cómo declarar dependencias
Una tarea común es declarar dependencias para los conjuntos de orígenes específicos de Android. El nuevo complemento requiere que estos se coloquen de forma explícita dentro del bloque sourceSets, a diferencia del bloque dependencies general que se usaba anteriormente.
Android-KMP
El nuevo complemento promueve una estructura más limpia agrupando las dependencias de Android dentro del conjunto de orígenes androidMain. Además del conjunto de orígenes principal, hay dos conjuntos de orígenes de prueba, que se crean a pedido: androidDeviceTest y androidHostTest (consulta la configuración de pruebas de host y dispositivo para obtener más información).
// build.gradle.kts
kotlin {
android {}
//... other targets
sourceSets {
commonMain.dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0")
}
// Dependencies are now scoped to the specific Android source set
androidMain.dependencies {
implementation("androidx.appcompat:appcompat:1.7.0")
implementation("com.google.android.material:material:1.11.0")
}
}
}
Los conjuntos de orígenes tienen compilaciones de Kotlin correspondientes llamadas main, deviceTest y hostTest. Los conjuntos de orígenes y las compilaciones se pueden configurar en la secuencia de comandos de compilación de la siguiente manera:
// build.gradle.kts
kotlin {
android {
compilations.getByName("deviceTest") {
kotlinOptions.languageVersion = "2.0"
}
}
}
Complemento heredado
Con el complemento anterior, podías declarar dependencias específicas de Android en el bloque de dependencias de nivel superior, lo que a veces podía ser confuso en un módulo multiplataforma.
// build.gradle.kts
kotlin {
androidTarget()
//... other targets
}
// Dependencies for all source sets were often mixed in one block
dependencies {
// Common dependencies
commonMainImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0")
// Android-specific dependencies
implementation("androidx.appcompat:appcompat:1.7.0")
implementation("com.google.android.material:material:1.11.0")
}
3. Cómo habilitar recursos de Android
La compatibilidad con los recursos de Android (carpetas res) no está habilitada de forma predeterminada en el nuevo complemento para optimizar el rendimiento de la compilación. Debes habilitar la opción para usarlos. Este cambio ayuda a garantizar que los proyectos que no requieren recursos específicos de Android no se vean afectados por la sobrecarga de compilación asociada.
Android-KMP
Debes habilitar de forma explícita el procesamiento de recursos de Android. Los recursos deben colocarse en src/androidMain/res.
// build.gradle.kts
kotlin {
android {
// ...
// Enable Android resource processing
androidResources {
enable = true
}
}
}
// Project Structure
// └── src
// └── androidMain
// └── res
// ├── values
// │ └── strings.xml
// └── drawable
// └── icon.xml
Complemento heredado
El procesamiento de recursos estaba habilitado de forma predeterminada. Podías agregar de inmediato un directorio res en src/main y comenzar a agregar elementos de diseño, valores, etc., en formato XML.
// build.gradle.kts
android {
namespace = "com.example.library"
compileSdk = 34
// No extra configuration was needed to enable resources.
}
// Project Structure
// └── src
// └── main
// └── res
// ├── values
// │ └── strings.xml
// └── drawable
// └── icon.xml
4. Cómo configurar pruebas de host y dispositivo
Un cambio significativo en el nuevo complemento es que las pruebas de host (unidades) y de dispositivo (instrumentadas) de Android están inhabilitadas de forma predeterminada. Debes habilitar la opción de forma explícita para crear los conjuntos de orígenes y las configuraciones de prueba, mientras que el complemento anterior los creaba automáticamente.
Este modelo de habilitación ayuda a verificar que tu proyecto siga siendo simple y solo incluya la lógica de compilación y los conjuntos de orígenes que usas de forma activa.
Android-KMP
En el nuevo complemento, habilitas y configuras las pruebas dentro del bloque kotlin.android. Esto hace que la configuración sea más explícita y evita la creación de componentes de prueba sin usar. El conjunto de orígenes androidUnitTest se convierte en
androidHostTest (el directorio de prueba cambia de src/androidUnitTest a
src/androidHostTest) y androidInstrumentedTest se convierte en
androidDeviceTest (el directorio de prueba cambia de
src/androidInstrumentedTest a src/androidDeviceTest).
// build.gradle.kts
kotlin {
android {
// ...
// Opt-in to enable and configure host-side (unit) tests
withHostTest {
isIncludeAndroidResources = true
}
// Opt-in to enable and configure device-side (instrumented) tests
withDeviceTest {
instrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
execution = "HOST"
}
}
}
// Project Structure (After Opt-in)
// └── src
// ├── androidHostTest
// └── androidDeviceTest
Complemento heredado
Con el complemento com.android.library, los conjuntos de orígenes androidUnitTest y androidInstrumentedTest se crean de forma predeterminada. Configuras su comportamiento dentro del bloque android, por lo general, con la DSL testOptions.
// build.gradle.kts
android {
defaultConfig {
// Runner was configured in defaultConfig
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
testOptions {
// Configure unit tests (for the 'test' source set)
unitTests.isIncludeAndroidResources = true
// Configure device tests (for the 'androidTest' source set)
execution = "HOST"
}
}
// Project Structure (Defaults)
// └── src
// ├── test
// └── androidTest
5. Habilita la compilación de código fuente Java
Si tu biblioteca de KMP necesita compilar orígenes de Java para su destino de Android, debes habilitar de forma explícita esta funcionalidad con el nuevo complemento. Ten en cuenta que esto habilita la compilación para los archivos Java ubicados directamente dentro de tu proyecto, no para sus dependencias. También cambia el método para configurar la versión de destino de JVM del compilador de Java y Kotlin.
Android-KMP
Para habilitar la compilación de Java, llama a withJava(). El destino de JVM ahora se configura directamente dentro del bloque kotlin { android {} } para una configuración más unificada. La configuración de jvmTarget aquí se aplica a la compilación de Kotlin y Java para el destino de Android.
// build.gradle.kts
kotlin {
android {
// Opt-in to enable Java source compilation
withJava()
// Configure the JVM target for both Kotlin and Java sources
compilerOptions {
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8)
}
}
// ...
}
// Project Structure:
// └── src
// └── androidMain
// ├── kotlin
// │ └── com/example/MyKotlinClass.kt
// └── java
// └── com.example/MyJavaClass.java
Complemento heredado
La compilación de Java estaba habilitada de forma predeterminada. El destino de JVM para los orígenes de Java y Kotlin se estableció en el bloque de Android con compileOptions.
// build.gradle.kts
android {
// ...
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
}
kotlin {
androidTarget {
compilations.all {
kotlinOptions.jvmTarget = "1.8"
}
}
}
6. Interactúa con variantes de compilación usando androidComponents
La extensión androidComponents aún está disponible para interactuar con artefactos de compilación de forma programática. Si bien gran parte de la API de Variant sigue siendo la misma,
la nueva interfaz AndroidKotlinMultiplatformVariant es más limitada porque
el complemento solo produce una sola variante.
En consecuencia, las propiedades relacionadas con los tipos de compilación y las variantes de productos ya no están disponibles en el objeto de variante.
Android-KMP
El bloque onVariants ahora itera sobre una sola variante. Aún puedes acceder a propiedades comunes como name y artifacts, pero no a las específicas del tipo de compilación.
// build.gradle.kts
androidComponents {
onVariants { variant ->
val artifacts = variant.artifacts
}
}
Complemento heredado
Con varias variantes, podías acceder a propiedades específicas del tipo de compilación para configurar tareas.
// build.gradle.kts
androidComponents {
onVariants(selector().withBuildType("release")) { variant ->
// ...
}
}
7. Selecciona variantes de dependencias de bibliotecas de Android
Tu biblioteca de KMP produce una sola variante para Android. Sin embargo, es posible que dependas de una biblioteca de Android estándar (com.android.library) que tenga varias variantes (p.ej., variantes de productos free/paid). Controlar cómo tu proyecto selecciona una variante de esa dependencia es un requisito común.
Android-KMP
El nuevo complemento centraliza y aclara esta lógica dentro del bloque kotlin.android.localDependencySelection. Esto hace que sea mucho más claro qué variantes de dependencias externas se seleccionarán para tu biblioteca de KMP de una sola variante.
// build.gradle.kts
kotlin {
android {
localDependencySelection {
// For dependencies with multiple build types, select 'debug' first, and 'release' in case 'debug' is missing
selectBuildTypeFrom.set(listOf("debug", "release"))
// For dependencies with a 'type' flavor dimension...
productFlavorDimension("type") {
// ...select the 'typeone' flavor.
selectFrom.set(listOf("typeone"))
}
}
}
}
Complemento heredado
Configuraste estrategias de selección de dependencias dentro de los bloques buildTypes and
productFlavors. A menudo, esto implicaba usar missingDimensionStrategy para proporcionar una variante predeterminada para una dimensión que tu biblioteca no tenía, o bien matchingFallbacks dentro de una variante específica para definir un orden de búsqueda.
Consulta Cómo resolver errores de coincidencia para obtener información más detallada sobre el uso de la API.
8. Dependencias de vista previa de Compose
Por lo general, queremos tener bibliotecas específicas en nuestro entorno de desarrollo local para evitar que las herramientas internas se filtren en el artefacto publicado final. Esto se convierte en un desafío con el nuevo complemento de Android para KMP porque quita la arquitectura de tipo de compilación que se usa para separar las dependencias de desarrollo del código de lanzamiento.
Android-KMP
Para agregar una dependencia solo para el desarrollo y las pruebas locales, agrega la dependencia directamente a la configuración de classpath del tiempo de ejecución (en el bloque dependencies de nivel superior) de la compilación principal de Android. Esto ayuda a garantizar que la
dependencia esté disponible en el tiempo de ejecución (por ejemplo, para herramientas como
Compose Preview), pero no forma parte del
classpath de compilación ni de la API publicada de tu biblioteca.
// build.gradle.kts
dependencies {
"androidRuntimeClasspath"(libs.androidx.compose.ui.tooling)
}
Complemento heredado
Los proyectos de Kotlin Multiplatform que usan el complemento com.android.library para el destino de Android deben usar la configuración debugImplementation, que limita la dependencia al tipo de compilación de depuración y evita que se incluya en la variante de lanzamiento de la biblioteca que usan los consumidores.
// build.gradle.kts
dependencies {
debugImplementation(libs.androidx.compose.ui.tooling)
}
9. Configura el destino de JVM para el destino de Android de KMP
El complemento para Android de KMP establece el destino de JVM con android.compilerOptions.jvmTarget, que se aplica a Java y Kotlin, lo que simplifica la configuración en comparación con los bloques compileOptions y kotlinOptions separados en proyectos de Android puros.
Android-KMP
Cuando trabajas con un proyecto de Kotlin Multiplatform (KMP) que incluye un destino de Android, tienes varias formas de configurar la versión de destino de JVM para el compilador de Kotlin y Java. Comprender el alcance y la jerarquía de estas configuraciones es clave para administrar la compatibilidad de código de bytes de tu proyecto.
Estas son las tres formas principales de establecer el destino de JVM, ordenadas de menor a mayor prioridad. Los valores de destino de JVM que tienen mayor prioridad se aplican a un subconjunto más pequeño de tus destinos configurados y anulan los valores que tienen menor prioridad, lo que significa que puedes establecer diferentes versiones de JVM para diferentes destinos y compilaciones dentro de los destinos de tu proyecto.
Usa la cadena de herramientas de Kotlin (menor prioridad)
La forma más general de establecer el destino de JVM es especificar la cadena de herramientas en el bloque kotlin de tu archivo build.gradle.kts. Este enfoque establece el destino para las tareas de compilación de Kotlin y Java en todos los destinos basados en JVM de tu proyecto, incluido Android.
// build.gradle.kts
kotlin {
jvmToolchain(21)
}
Esta configuración hace que kotlinc y javac apunten a JVM 21. Es una excelente manera de establecer una línea de base coherente para todo el proyecto.
Usa opciones de compilador a nivel de destino de Android (prioridad media)
Puedes especificar el destino de JVM específicamente para el destino de KMP para Android dentro del bloque android. Este parámetro de configuración anula la configuración jvmToolchain de todo el proyecto y se aplica a todas las compilaciones de Android.
// build.gradle.kts
kotlin {
android {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_11)
}
}
}
En este caso, incluso si jvmToolchain se establece en una versión diferente, el código Kotlin y Java del destino de Android se compilará para apuntar a JVM 11.
Usa opciones de compilador a nivel de compilación (mayor prioridad)
Para obtener el control más detallado, puedes configurar las opciones del compilador por compilación (por ejemplo, solo en androidMain o androidHostTest). Esto es útil si una compilación específica necesita apuntar a una versión diferente de JVM. Este parámetro de configuración anula la cadena de herramientas de Kotlin y las opciones a nivel de destino de Android.
// build.gradle.kts
kotlin {
android {
compilations.all {
compileTaskProvider.configure {
compilerOptions.jvmTarget.set(JvmTarget.JVM_11)
}
}
}
}
Esta configuración ayuda a garantizar que todas las compilaciones dentro del destino de Android usen JVM 11, lo que proporciona un control detallado.
Complemento heredado
En un proyecto de KMP que usa el complemento de biblioteca de Android estándar (com.android.library), la configuración es un poco diferente de cuando usas el complemento de Android para KMP (pero conceptualmente similar).
Usa la cadena de herramientas de Kotlin
El método kotlin.jvmToolchain() funciona de forma idéntica, ya que establece sourceCompatibility y targetCompatibility para Java, y jvmTarget para Kotlin. Recomendamos usar este método.
// build.gradle.kts
kotlin {
jvmToolchain(21)
}
compileOptions y kotlinOptions
Si no usas la cadena de herramientas de Kotlin, debes configurar los destinos de JVM con bloques separados para Java y Kotlin.
// build.gradle.kts
android {
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
}
}
10. Publica reglas de conservación del consumidor
Si tu biblioteca de KMP necesita enviar reglas de conservación del consumidor (como reglas de ProGuard para R8) para sus consumidores, debes habilitar de forma explícita la publicación en el nuevo complemento. Anteriormente, las reglas de conservación del consumidor se publicaban de forma predeterminada si se especificaban.
Android-KMP
Con el nuevo complemento, debes establecer
optimization.consumerKeepRules.publish = true y especificar archivos de reglas
dentro del consumerKeepRules bloque para publicar reglas de conservación del consumidor.
// build.gradle.kts
kotlin {
android {
optimization {
consumerKeepRules.apply {
publish = true
file("consumer-proguard-rules.pro")
}
}
}
}
Complemento heredado
Con com.android.library, cualquier archivo de reglas especificado con consumerProguardFiles en android.defaultConfig se publica en los artefactos de la biblioteca de forma predeterminada.
// build.gradle.kts
android {
defaultConfig {
consumerProguardFiles("consumer-proguard-rules.pro")
}
}
11. Publica tu biblioteca en Maven
Si planeas publicar tu biblioteca de KMP en Maven para que la usen otros proyectos, el proceso difiere según si usas el nuevo complemento de Android-KMP o el complemento heredado.
Android-KMP
El complemento com.android.kotlin.multiplatform.library se integra con los mecanismos de publicación estándar de Kotlin Multiplatform. No se requieren pasos específicos de Android más allá del proceso de publicación de bibliotecas de KMP estándar.
Para publicar tu biblioteca, sigue la documentación oficial de JetBrains: Configura la publicación de una biblioteca multiplataforma.
Complemento heredado
Cuando usas com.android.library para el destino de Android en un proyecto de KMP, debes seguir la guía de publicación de bibliotecas de Android estándar para preparar y publicar el artefacto específico de Android (.aar).
Para obtener instrucciones detalladas, consulta Prepara tu biblioteca para el lanzamiento.
Referencia de la API del complemento
El nuevo complemento tiene una plataforma de API diferente a com.android.library. Para obtener información detallada sobre la nueva DSL y las interfaces, consulta las referencias de la API:
KotlinMultiplatformAndroidLibraryExtensionKotlinMultiplatformAndroidLibraryTargetKotlinMultiplatformAndroidDeviceTestKotlinMultiplatformAndroidHostTestKotlinMultiplatformAndroidVariant
Problemas conocidos en el complemento de biblioteca de Android-KMP
Estos son los problemas conocidos que pueden ocurrir cuando aplicas el nuevo complemento com.android.kotlin.multiplatform.library:
Falla la versión previa de Compose cuando se usa el nuevo complemento de Android-KMP
- Se corrigió en
Android Studio Otter 2 Feature Drop | 2025.2.2 Canary 3yAndroid Gradle Plugin 9.0.0-alpha13.
- Se corrigió en
-
- Se corrigió en
Android Studio Otter 2 Feature Drop | 2025.2.2 Canary 3yAndroid Gradle Plugin 9.0.0-alpha13.
- Se corrigió en
-
- Se corrigió en
Kotlin Gradle Plugin 2.3.0-Beta2.
- Se corrigió en
Admite sourceSetTree instrumentado para el destino de androidLibrary.
- Se corrigió en
Android Studio Otter 2 Feature Drop | 2025.2.2 Canary 3yAndroid Gradle Plugin 9.0.0-alpha13.
- Se corrigió en
Recomendaciones para ti
- Nota: El texto del vínculo se muestra cuando JavaScript está desactivado
- Configurar tu entorno
- Agrega un módulo de KMP a un proyecto