Зависимости
Все зависимости объявляются в app/build.gradle.kts с использованием системы каталога версий Gradle (libs). Конкретные версии разрешены в файле проекта gradle/libs.versions.toml.
Производственные зависимости
Ядро AndroidX
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
core.ktx предоставляет расширения Kotlin для API Android. lifecycle.runtime.ktx позволяет запускать сопрограммы, область действия которых связана с жизненным циклом компонента. activity.compose — это мост между ComponentActivity и Jetpack Compose.
Состав реактивного ранца + Материал 3
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.ui.graphics)
implementation(libs.androidx.compose.ui.tooling.preview)
implementation(libs.androidx.compose.material3)
implementation("androidx.compose.material3:material3:1.2.0")
implementation("androidx.compose.material:material-icons-extended")
Составление спецификации (спецификация) синхронизирует версии всех артефактов в наборе инструментов. material-icons-extended предоставляет полный набор значков символов материалов, используемых в различных компонентах интерфейса.
Навигация
implementation("androidx.navigation:navigation-compose:2.7.7")
Это позволяет декларативно определять навигационный граф с помощью компонуемых объектов. Версия 2.7.7 поддерживает типобезопасные API и обработку типизированных аргументов, используемые в MainActivity.kt.
Огненная база
implementation(platform(libs.firebase.bom))
implementation(libs.firebase.auth)
Спецификация Firebase синхронизирует версии Firebase SDK. На уровне клиентского SDK используется только модуль аутентификации (firebase.auth), поскольку Data Connect вызывается посредством прямых HTTP-вызовов к конечной точке GraphQL.
Супабаза
implementation(libs.supabase.postgrest)
implementation(libs.supabase.auth)
implementation(libs.ktor.client.android)
Официальный Supabase SDK для Kotlin разделен на модули. postgrest управляет операциями CRUD над таблицами PostgreSQL. supabase.auth обеспечивает потоки аутентификации на основе JWT. ktor.client.android — это базовый механизм HTTP, необходимый для SDK.
Локальное постоянство
implementation(libs.androidx.datastore.preferences)
Настройки хранилища данных используются в ThemeManager.kt для сохранения предпочтений темы пользователя (светлой/темной) между сеансами. Это рекомендуемый преемник SharedPreferences при асинхронной работе с сопрограммами.
Материал (устаревший)
implementation(libs.material)
Включено для совместимости с DatePickerDialog и TimePickerDialog Android View, экземпляры которых создаются непосредственно в MaquinasScreen.kt и ReservasScreen.kt, поскольку Compose Material 3 не предоставляет эти диалоги изначально в используемой версии.
Тестирование зависимостей
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
debugImplementation(libs.androidx.compose.ui.tooling)
debugImplementation(libs.androidx.compose.ui.test.manifest)
Инструментальные тесты расположены в app/src/androidTest/, а модульные тесты — в app/src/test/. Проект включает классы тестов по умолчанию, созданные Android Studio (ExampleInstrumentedTest и ExampleUnitTest), без дополнительных пользовательских тестов в этой версии.
Плагины Gradle
// app/build.gradle.kts
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.google.services)
alias(libs.plugins.kotlin.serialization)
}
Плагин kotlin.compose включает компилятор Compose для Kotlin 2.0+. google.services обрабатывает google-services.json. kotlin.serialization включает процессор аннотаций kotlinx.serialization, используемый классами данных модели для автоматической десериализации из ответов Supabase.