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.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 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, ela está vinculada a versões do plug-in do compilador Kotlin e foi lançada em outra cadência do Compose.

A partir do Kotlin 2.0, o appcompiler do Compose é gerenciado com o compilador Kotlin e usa a mesma versão. Consulte Plug-in do Gradle para Compose Compiler para conferir 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.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'

    // ..
}

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, e a BoM ajuda você a usar essas versões mais recentes automaticamente.

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 disponíveis do Compose. Cada BoM é um snapshot de um ponto no tempo 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.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
    // ..
}

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

Você pode registrar problemas no nosso Issue Tracker.