Как перенести сборку в каталоги версий

Каталоги версий Gradle позволяют добавлять и поддерживать зависимости и плагины масштабируемым образом. Если у вас несколько модулей, то каталоги версий Gradle упрощают управление зависимостями и плагинами. Вместо того чтобы задавать в коде названия и версии зависимостей в отдельных файлах сборки и обновлять каждую запись при необходимости, вы можете создать центральный каталог версий зависимостей, на который различные модули могут ссылаться типобезопасным способом с помощью Android Studio.

На этой странице представлена основная информация о переносе приложения Android в каталоги версий. Подробнее о том, как добавить зависимости сборки, читайте в документации Gradle.

Создайте файл каталога версий

Сначала создайте файл каталога версий. В папке gradle корневого проекта создайте файл с названием libs.versions.toml. По умолчанию Gradle ищет каталог в файле libs.versions.toml, поэтому мы рекомендуем использовать это название.

Добавьте в файл libs.versions.toml следующие разделы:

[versions]

[libraries]

[plugins]

Разделы используются следующим образом:

  • В блоке versions определите переменные, которые содержат версии зависимостей и плагинов. Эти переменные используются в последующих блоках (libraries и plugins).
  • В блоке libraries определите зависимости.
  • В блоке plugins определите плагины.

Этапы переноса

Рекомендуем выполнять действия в указанном порядке. Сборка может одновременно использовать зависимости и плагины из скриптов сборки и каталогов, поэтому вы можете переносить зависимости и плагины по отдельности.

Процесс переноса:

  1. Добавьте новую запись в каталог.
  2. Синхронизируйте проект для Android.
  3. Замените предыдущее объявление строки на типобезопасный метод доступа к каталогу.

Перенос зависимостей

Добавьте запись для каждой зависимости в разделы versions и libraries файла libs.versions.toml. Синхронизируйте проект и замените объявления в файлах сборки названиями из каталога.

В этом фрагменте кода показан файл build.gradle.kts до удаления зависимости:

Kotlin

dependencies {
    implementation("androidx.core:core-ktx:1.9.0")

}

Яркий

dependencies {
    implementation 'androidx.core:core-ktx:1.9.0'

}

В этом фрагменте кода показано, как определить зависимость в файле каталога версий:

[versions]
ktx = "1.9.0"

[libraries]
androidx-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "ktx" }

Для блока зависимостей в каталогах рекомендуется использовать dash-case (например, androidx-ktx), чтобы улучшить автодополнение кода в файлах сборки.

В файле build.gradle.kts каждого модуля, которому требуется зависимость, определите зависимости по именам, которые вы задали в файле TOML.

Kotlin

dependencies {
   implementation(libs.androidx.ktx)

}

Яркий

dependencies {
   implementation libs.androidx.ktx

}

Перенос плагинов

Добавьте запись для каждого плагина в разделы versions и plugins файла libs.versions.toml. Синхронизируйте проект, а затем замените их объявления в блоке plugins{} в файлах сборки на их названия в каталоге.

Ниже показан фрагмент кода файла build.gradle.kts до удаления плагина.

Kotlin

// Top-level `build.gradle.kts` file
plugins {
   id("com.android.application") version "7.4.1" apply false

}

// Module-level `build.gradle.kts` file
plugins {
   id("com.android.application")

}

Яркий

// Top-level `build.gradle` file
plugins {
   id 'com.android.application' version '7.4.1' apply false

}

// Module-level `build.gradle` file
plugins {
   id 'com.android.application'

}

В этом фрагменте кода показано, как определить плагин в файле каталога версий:

[versions]
androidGradlePlugin = "7.4.1"

[plugins]
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }

Как и в случае с зависимостями, для записей каталога блоков plugins рекомендуется использовать формат dash-case (например, android-application), чтобы автозаполнение кода в файлах сборки работало лучше.

В следующем коде показано, как определить плагин com.android.application в файлах build.gradle.kts верхнего уровня и уровня модуля. Используйте alias для плагинов, которые поступают из файла каталога версий, и id для плагинов, которые не поступают из файла каталога версий, например плагинов соглашений.

Kotlin

// Top-level build.gradle.kts
plugins {
   alias(libs.plugins.android.application) apply false

}

// module build.gradle.kts
plugins {
   alias(libs.plugins.android.application)

}

Яркий

// Top-level build.gradle
plugins {
   alias libs.plugins.android.application apply false

}

// module build.gradle
plugins {
   alias libs.plugins.android.application

}

Подробнее…

Дополнительную информацию о настройке каталога версий можно найти в следующих ресурсах: