Usa una lista de materiales

La lista de materiales (BoM) de Compose te permite administrar toda tu biblioteca de Compose del contenedor especificando solo la versión de la BoM. La BoM en sí tiene vínculos a las versiones estables de las diferentes bibliotecas de Compose, de modo que funcionen bien en conjunto. Cuando usas la BoM en tu app, no necesitas agregar ninguna versión a las dependencias de la biblioteca de Compose. Cuando actualizas la versión de BoM, todas las bibliotecas que usas se actualizan automáticamente a sus versiones nuevas.

Kotlin

dependencies {
    // Specify the Compose BOM with a version definition
    val composeBom = platform("androidx.compose:compose-bom:2024.09.03")
    implementation(composeBom)
    testImplementation(composeBom)
    androidTestImplementation(composeBom)

    // Specify Compose library dependencies without a version definition
    implementation("androidx.compose.foundation:foundation")
    // ..
    testImplementation("androidx.compose.ui:ui-test-junit4")
    // ..
    androidTestImplementation("androidx.compose.ui:ui-test")
}

Groovy

dependencies {
    // Specify the Compose BOM with a version definition
    Dependency composeBom = platform('androidx.compose:compose-bom:2024.09.03')
    implementation composeBom
    testImplementation composeBom
    androidTestImplementation composeBom

    // Specify Compose library dependencies without a version definition
    implementation 'androidx.compose.foundation:foundation'
    // ..
    testImplementation 'androidx.compose.ui:ui-test-junit4'
    // ..
    androidTestImplementation 'androidx.compose.ui:ui-test'
}

Para descubrir qué versiones de la biblioteca de Compose se asignan a una versión específica de la BoM, consulta la asignación de la versión de la BoM a la biblioteca.

¿Por qué no se incluye la biblioteca del compilador de Compose en la BoM?

La extensión del compilador de Kotlin para Compose (androidx.compose.compiler) no está vinculada a las versiones de la biblioteca de Compose. En cambio, está vinculada a versiones de Kotlin de compilación y se lanzó en una cadencia independiente del resto de Compose.

A partir de Kotlin 2.0, el compilador de apps de Compose se administra junto con Kotlin. y usa la misma versión que el compilador de Kotlin. Consulta Complemento de Gradle para el compilador de Compose los detalles de configuración.

Antes de Kotlin 2.0, debes asegurarte de usar una versión que sea compatible. con tu versión de Kotlin. Puedes encontrar la versión de Kotlin que se asigna a cada del complemento en Mapa de compatibilidad de Compose a Kotlin y cómo configurarlo en el compilador de Compose.

¿Cómo uso una versión de biblioteca diferente a la designada en la BoM?

En la sección de dependencias build.gradle, mantén la importación de la plataforma BoM. En la importación de dependencias de la biblioteca, especifica la versión de anulación. Por ejemplo, aquí se muestra cómo declarar dependencias si quieres usar una versión más reciente de la biblioteca de animación, sin importar qué versión se designe en la BoM:

Kotlin

dependencies {
    // Specify the Compose BOM with a version definition
    val composeBom = platform("androidx.compose:compose-bom:2024.09.03")
    implementation(composeBom)

    // Override the BOM version when needed
    implementation("androidx.compose.animation:animation:1.8.0-alpha03")

    // ..
}

Groovy

dependencies {
    // Specify the Compose BOM with a version definition
    Dependency composeBom = platform("androidx.compose:compose-bom:2024.09.03")
    implementation composeBom

    // Override the BOM version when needed
    implementation 'androidx.compose.animation:animation:1.8.0-alpha03'

    // ..
}

¿La BoM agrega todas las bibliotecas de Compose a mi app automáticamente?

No. Para agregar y usar bibliotecas de Compose en tu app, debes declarar cada biblioteca como una línea de dependencia separada en el archivo Gradle (generalmente app/build.gradle) de tu módulo (nivel de app).

Usar la BoM garantiza que las versiones de las bibliotecas de Compose en tu app sean compatibles, pero la BoM no agrega esas bibliotecas a tu app.

En el futuro, las versiones de las bibliotecas de Compose se controlarán de forma independiente, lo que significa que los números de versión comenzarán a aumentar a su propio ritmo. Las versiones estables más recientes de cada biblioteca se prueban juntas. Sin embargo, encontrar las versiones estables más recientes de cada biblioteca puede ser difícil, y la BoM te ayuda a usarlas automáticamente.

¿Tengo la obligación de usar la BoM?

No. Aún puedes optar por agregar cada versión de dependencia manualmente. Sin embargo, recomendar el uso de la BoM, ya que facilitará el uso de todas las últimas versiones estables al mismo tiempo.

¿La BoM funciona con catálogos de versiones?

Sí. Puedes incluir la BoM en el catálogo de versiones y omitir las otras versiones de la biblioteca de Compose:

[libraries]
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "androidxComposeBom" }
androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation" }

No olvides importar la BoM en el build.gradle de tu módulo:

Kotlin

dependencies {
    val composeBom = platform(libs.androidx.compose.bom)
    implementation(composeBom)
    androidTestImplementation(composeBom)

    // import Compose dependencies as usual
}

Groovy

dependencies {
    Dependency composeBom = platform(libs.androidx.compose.bom)
    implementation composeBom
    androidTestImplementation(composeBom)

    // import Compose dependencies as usual
}

¿Qué sucede si quiero probar versiones alfa o beta de las bibliotecas de Compose?

Hay tres BoM de Compose disponibles. Cada BoM es una instantánea de un momento determinado de las versiones más recientes disponibles de las bibliotecas de Compose.

  • Estable: Contiene las versiones estables más recientes de cada biblioteca.
  • Beta: contiene las versiones beta más recientes, versiones candidatas (RC) o estables de cada biblioteca
  • Alfa: Contiene las versiones alfa, beta, RC o estables más recientes de cada biblioteca.

Para especificar las versiones alfa y beta de la BoM, agrega -alpha y -beta al nombre del artefacto de la BoM. La versión estable no tiene sufijo.

Kotlin

dependencies {
    // Specify the Compose BOM with a version definition
    val composeBom = platform("androidx.compose:compose-bom-alpha:2024.09.03")
    //            or platform("androidx.compose:compose-bom-beta:2024.09.03")
    implementation(composeBom)
    // ..
}

Groovy

dependencies {
    // Specify the Compose BOM with a version definition
    Dependency composeBom = platform('androidx.compose:compose-bom-alpha:2024.09.03')
    //                   or platform('androidx.compose:compose-bom-beta:2024.09.03')
    implementation composeBom
    // ..
}

¿Cómo informo un problema o envío comentarios sobre la BoM?

Puedes informar problemas en nuestra herramienta de seguimiento de errores.