Usar uma Lista de materiais

A lista de materiais (BoM) do Compose permite gerenciar todas as versões da biblioteca do Compose especificando apenas a versão da BoM. A BoM tem links para as versões estáveis das diferentes bibliotecas do Compose de maneira que elas funcionem bem juntas. Ao usar a BoM no app, não é necessário adicionar nenhuma versão às dependências de biblioteca do Compose. Quando você atualiza a versão da BoM, todas as bibliotecas que você está usando são atualizadas de forma automática para as novas versões.

Kotlin

dependencies {
    // Specify the Compose BOM with a version definition
    val composeBom = platform("androidx.compose:compose-bom:2024.10.01")
    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.10.01')
    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 descobrir quais versões de bibliotecas do Compose correspondem a uma versão específica da BoM, confira a seção Mapeamento de versão da BoM e de bibliotecas.

Por que a biblioteca Compose Compiler não está inclusa na BoM?

A extensão do compilador Kotlin do Compose (androidx.compose.compiler) não está vinculada às versões de biblioteca do Compose. Em vez disso, ele está vinculado às versões do plug-in do compilador Kotlin e foi lançado em uma cadência separada do restante do Compose.

A partir do Kotlin 2.0, o appcompiler do Compose é gerenciado com o compilador Kotlin e usa a mesma versão. Consulte o plug-in do Gradle do Compose Compiler para detalhes de configuração.

Antes da Kotlin 2.0, era necessário usar uma versão compatível com a versão do Kotlin. Você encontra a versão do Kotlin que corresponde a cada versão do plug-in no Mapa de compatibilidade do Compose para Kotlin e como configurá-lo no Compilador do Compose.

Como usar uma versão de biblioteca diferente da que é designada na BoM?

Na seção de dependências do build.gradle, mantenha a importação da plataforma BoM. Na importação das dependências da biblioteca, especifique a versão substituída. Por exemplo, veja como declarar dependências se você quer usar uma versão mais recente da biblioteca de animação, independente da versão designada na BoM:

Kotlin

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

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

    // ..
}

Groovy

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

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

    // ..
}

A BoM adiciona de forma automática todas as bibliotecas do Compose ao meu app?

Não. Para adicionar e usar bibliotecas do Compose no seu app, é necessário declarar cada biblioteca como uma linha de dependência separada no arquivo Gradle do módulo no nível do app, geralmente em app/build.gradle.

O uso da BoM garante que as versões de qualquer biblioteca do Compose no seu app sejam compatíveis, mas ela não adiciona essas bibliotecas ao seu app.

A partir de agora, as bibliotecas do Compose serão criadas de maneira independente, o que significa que os números de versão vão começar a ser incrementados no próprio ritmo. As versões estáveis mais recentes de cada biblioteca são testadas juntas. No entanto, encontrar as versões estáveis mais recentes de cada biblioteca pode ser difícil. Por isso, a BoM ajuda você a usar essas versões de forma automática.

O uso da BoM é obrigatório?

Não. Você ainda pode adicionar cada versão de dependência manualmente. No entanto, recomendamos a BoM, porque ela facilita o uso de todas as versões estáveis mais recentes ao mesmo tempo.

A BoM funciona com os catálogos de versões?

Sim. É possível incluir a BoM no catálogo de versões e omitir as outras versões de biblioteca do Compose:

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

Não se esqueça de importar a BoM no build.gradle do 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
}

E se eu quiser testar versões Alfa ou Beta das bibliotecas do Compose?

Há três BOMs do Compose disponíveis. Cada BoM é um snapshot pontual das versões mais recentes disponíveis das bibliotecas do Compose.

  • Estável: contém as versões estáveis mais recentes de cada biblioteca
  • Beta: contém as versões beta, candidatas à versão de lançamento (RC) ou estáveis mais recentes de cada biblioteca.
  • Alfa: contém as versões Alfa, Beta, RC ou estáveis mais recentes de cada biblioteca.

As versões Alfa e Beta da BoM são especificadas adicionando -alpha e -beta ao nome do artefato da BoM. A versão estável não tem sufixo.

Kotlin

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

Groovy

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

Como posso informar um problema ou enviar feedback sobre a BoM?

Você pode registrar problemas no nosso Issue Tracker.