Управление зависимостями в Android
Иногда работаю на part time над разными проектами и всегда обращаю внимание на то, как устроена работа с gradle и зависимостями. Способов управлять зависимостями как вы знаете существует несколько, вот и решил набросать пост на эту тему.
Давайте вкратце обрисуем ситуации.
Если у вас приложение монолит, то по сути можно не заморачиваться, зависимости можно закинуть куда-нибудь в ext build.gradle проекта и использовать потом в модуле. Либо вообще руками прописывать все зависимости непосредственно в модуле. Самый простой и древний способ.
Если у вас многомодульный проект, нужно как-то и где-то менеджерить зависимости, чтоб можно было гибко ими управлять, переиспользовать в модулях и т.д. И это можно сделать несколькими способами.
Способ 1 – Kotlin код + kts. Достаточно распространенный способ, который встречается во многих проектах. Есть некоторые проблемы c перформансом.
Как подрубить? В проект нужно добавить модуль buildSrc, подрубить к нему kotlin-dsl и можно объявлять зависимости в обычном, привычном Kotlin коде.
object Deps {
const val androidxAppCompat = "…"
}
А затем в build.gradle.kts
можно обращаться вот так
dependencies {
implementation(Deps.androidxAppCompat)
}
Посмотреть пример можно тут, тут и здесь.
Способ 2 – Version Catalog. В Gradle 7.0 добавили новую фичу Version Catalog. С помощью Version Catalog можно подключать несколько зависимостей одной строкой, предварительно объявив нужные зависимости в одну группу/бандл.
Как подрубить? В gradle, которая лежит в корне проекта нужно добавить файлик libs.versions.toml, в котором и объявляются зависимости в определенном формате.
А затем в build.gradle.kts
можно обращаться вот так
dependencies {
implementation(libs.compose)
}
Посмотреть пример можно тут, тут и здесь
Полезные ссылки
👉 Using Version Catalog on Android projects
👉 Clean Dependency Management in Multi Module Android Projects
👉 Gradle version catalogs for an awesome dependency management
👉 Migrate from Groovy to Kotlin DSL
👉 The New Way of Writing Build Gradle with Kotlin DSL
👉 Kotlin DSL: Gradle scripts in Android made easy
👉 Stop using Gradle buildSrc. Use composite builds instead
👉 GitHub – Android-Starter-2022
👉 GitHub – Now in Android App
👉 GitHub – RefreshVersions