Используйте спецификацию

Составление спецификации (BOM) позволяет вам управлять всеми версиями библиотеки Compose, указав только версию спецификации. Сама спецификация содержит ссылки на стабильные версии различных библиотек Compose, поэтому они хорошо работают вместе. При использовании спецификации в вашем приложении вам не нужно добавлять какую-либо версию в сами зависимости библиотеки Compose. Когда вы обновляете версию спецификации, все используемые вами библиотеки автоматически обновляются до новых версий.

Котлин

dependencies {
    // Specify the Compose BOM with a version definition
    val composeBom = platform("androidx.compose:compose-bom:2024.09.02")
    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")
}

классный

dependencies {
    // Specify the Compose BOM with a version definition
    Dependency composeBom = platform('androidx.compose:compose-bom:2024.09.02')
    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'
}

Чтобы узнать, какие версии библиотеки Compose сопоставлены с конкретной версией спецификации, проверьте сопоставление версий спецификации с библиотекой .

Почему библиотека Compose Compiler не включена в спецификацию?

Расширение компилятора Compose Kotlin (androidx.compose.compiler) не связано с версиями библиотеки Compose. Вместо этого он связан с версиями плагина компилятора Kotlin и выпускается отдельно от остальной части Compose.

Начиная с Kotlin 2.0, компилятор приложения Compose управляется вместе с компилятором Kotlin и использует ту же версию, что и компилятор Kotlin. Подробности настройки см. в разделе Плагин Compose Compiler Gradle .

До версии Kotlin 2.0 вам необходимо обязательно использовать версию, совместимую с вашей версией Kotlin. Вы можете найти версию Kotlin, соответствующую каждой версии плагина, в Compose to Kotlin Compatibility Map , а также узнать, как ее настроить в Compose Compiler .

Как использовать версию библиотеки, отличную от указанной в спецификации?

В разделе зависимостей build.gradle сохраните импорт платформы BOM. При импорте зависимостей библиотеки укажите переопределяющую версию. Например, вот как объявить зависимости, если вы хотите использовать более новую версию библиотеки анимации, независимо от того, какая версия указана в спецификации:

Котлин

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

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

    // ..
}

классный

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

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

    // ..
}

Добавляет ли спецификация автоматически все библиотеки Compose в мое приложение?

Нет. Чтобы фактически добавлять и использовать библиотеки Compose в вашем приложении, вы должны объявить каждую библиотеку как отдельную строку зависимости в файле Gradle вашего модуля (на уровне приложения) (обычно app/build.gradle).

Использование спецификации гарантирует совместимость версий любых библиотек Compose в вашем приложении, но спецификация фактически не добавляет эти библиотеки Compose в ваше приложение.

В будущем библиотеки Compose будут иметь независимые версии, а это означает, что номера версий начнут увеличиваться в своем собственном темпе. Последние стабильные выпуски каждой библиотеки тестируются вместе. Однако найти последние стабильные версии каждой библиотеки может быть сложно, и спецификация помогает автоматически использовать эти последние версии.

Должен ли я использовать спецификацию?

Нет. Вы по-прежнему можете добавить каждую версию зависимости вручную. Однако мы рекомендуем использовать спецификацию, поскольку это облегчит одновременное использование всех последних стабильных версий.

Работает ли спецификация с каталогами версий?

Да. Вы можете включить саму спецификацию в каталог версий и исключить другие версии библиотеки Compose:

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

Не забудьте импортировать спецификацию в build.gradle вашего модуля:

Котлин

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

    // import Compose dependencies as usual
}

классный

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

    // import Compose dependencies as usual
}

Что делать, если я хочу опробовать альфа- или бета-версии библиотек Compose?

Доступно три варианта составления спецификации. Каждая спецификация представляет собой снимок последних доступных версий библиотек Compose на определенный момент времени.

  • Стабильный — содержит последние стабильные версии каждой библиотеки.
  • Бета-версия — содержит последние бета-версии или стабильные версии каждой библиотеки.
  • Альфа — содержит последние альфа-, бета-версии или стабильные версии каждой библиотеки.

Альфа- и бета-версии спецификации указываются путем добавления -alpha и -beta к имени артефакта спецификации. Стабильная версия не имеет суффикса.

Котлин

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

классный

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

Как сообщить о проблеме или оставить отзыв о спецификации?

Вы можете сообщать о проблемах в нашем трекере проблем .

{% дословно %} {% дословно %} {% дословно %} {% дословно %}