Saltar al contingut principal

Dependències

Totes les dependències es declaren a app/build.gradle.kts mitjançant el sistema de catàleg de versions de Gradle (libs). Les versions concretes es resolen al fitxer gradle/libs.versions.toml del projecte.

Dependències de producció​

AndroidX Core​

implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)

core.ktx aporta extensions de Kotlin per a les API d'Android. lifecycle.runtime.ktx permet llançar corrutines amb scope lligat al cicle de vida del component. activity.compose és el pont entre ComponentActivity i Jetpack Compose.

Jetpack Compose + Material 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")

La BOM (Bill of Materials) de Compose sincronitza les versions de tots els artefactes del toolkit. material-icons-extended proporciona el conjunt complet d'icones de Material Symbols utilitzats en els diferents components de la interfície.

implementation("androidx.navigation:navigation-compose:2.7.7")

Permet definir el graf de navegació de manera declarativa mitjançant composables. La versió 2.7.7 és compatible amb les API de tipus segur i amb el maneig d'arguments tipats que s'utilitza a MainActivity.kt.

Firebase​

implementation(platform(libs.firebase.bom))
implementation(libs.firebase.auth)

La BOM de Firebase sincronitza les versions dels SDK de Firebase. Només es fa servir el mòdul d'autenticació (firebase.auth) a nivell de SDK de client, atès que Data Connect s'invoca mitjançant trucades HTTP directes a l'endpoint GraphQL.

Supabase​

implementation(libs.supabase.postgrest)
implementation(libs.supabase.auth)
implementation(libs.ktor.client.android)

El SDK oficial de Supabase per a Kotlin es divideix en mòduls. postgrest gestiona les operacions CRUD sobre les taules de PostgreSQL. supabase.auth proporciona fluxos d'autenticació basats en JWT. ktor.client.android és el motor HTTP subjacent requerit pel SDK.

Persistència local​

implementation(libs.androidx.datastore.preferences)

DataStore Preferences s'utilitza a ThemeManager.kt per persistir la preferència de tema (clar/fosc) de l'usuari entre sessions. És el successor recomanat de SharedPreferences en operar de forma asíncrona sobre corrutines.

Material (herència)​

implementation(libs.material)

Inclòs per a compatibilitat amb DatePickerDialog i TimePickerDialog d'Android View, que s'instancien directament a MaquinasScreen.kt i ReservasScreen.kt ja que Compose Material 3 no proporciona aquests diàlegs nadivament en la versió utilitzada.

Dependències de testing​

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)

Els tests instrumentats s'ubiquen a app/src/androidTest/ i els tests d'unitat a app/src/test/. El projecte inclou les classes de test per defecte generades per Android Studio (ExampleInstrumentedTest i ExampleUnitTest) sense tests personalitzats addicionals en aquesta versió.

Connectors de 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)
}

El connector kotlin.compose habilita el compilador de Compose per a Kotlin 2.0+. google.services processa google-services.json. kotlin.serialization habilita el processador d'anotacions de kotlinx.serialization, utilitzat per les data classes de models per a la deserialització automàtica des de les respostes de Supabase.