Herramientas de usuario

Herramientas del sitio


ada:howto:sicoferp:factory:new-migracion-sicoferp:dependencies

Dependencias del Proyecto PAE

Resumen de dependencias

El proyecto PAE utiliza un conjunto seleccionado de dependencias que balancean funcionalidad, performance y mantenibilidad.

┌─────────────────────────────────────────────────────┐
│          grouplabs.versions.toml                     │
│  (Centralized version management)                   │
└──────────────────┬──────────────────────────────────┘
                   │
    ┌──────────────┼──────────────┐
    │              │              │
    ▼              ▼              ▼
 Android      Kotlin        Others
  Gradle     Language       Libraries

Versiones principales

Ubicación: gradle/libs.versions.toml

[versions]
kotlin = "2.3.10"
gradle = "8.0"
compose = "1.5.4"
compileSdk = "36"
minSdk = "27"
targetSdk = "36"
jvmTarget = "17"

[libraries]
# Android Core
androidx-core-ktx = "1.10.1"
androidx-lifecycle-runtime-ktx = "2.6.1"
androidx-activity-compose = "1.7.2"

# Compose
androidx-compose-bom = "2023.09.00"
androidx-compose-ui = { module = "androidx.compose.ui:ui", version.ref = "compose" }
androidx-compose-material3 = { module = "androidx.compose.material3:material3", version = "1.1.2" }

# Coroutines
kotlinx-coroutines-core = "1.7.3"
kotlinx-coroutines-android = "1.7.3"

# Serialization
kotlinx-serialization-json = "1.6.2"

# HTTP Client
fuel = "2.3.1"
okhttp = "4.11.0"

# Dependency Injection
hilt-android = "2.48"

# WorkManager
androidx-work-runtime-ktx = "2.8.1"

# Database
room-runtime = "2.6.0"

# Security
androidx-security-crypto = "1.1.0-alpha06"
google-play-services-integrity = "1.2.0"

# Testing
junit = "4.13.2"
mockito-kotlin = "5.1.0"
robolectric = "4.12.1"

[plugins]
android-application = "com.android.application:8.1.0"
android-library = "com.android.library:8.1.0"
kotlin-android = "org.jetbrains.kotlin.android:1.9.20"
kotlin-kapt = "org.jetbrains.kotlin.kapt:1.9.20"
hilt-gradle = "com.google.dagger.hilt.android:2.48"

Desglose por categoría

Android Framework

Librería Versión Por qué
androidx:core-ktx 1.10.1 Extensiones Kotlin para Android
androidx:lifecycle-runtime 2.6.1 Lifecycle awareness en corrutinas
androidx:activity-compose 1.7.2 Integración Activity + Compose
androidx:appcompat 1.6.1 Compatibilidad hacia atrás
androidx:annotation 1.6.0 Anotar métodos para lint

Jetpack Compose

Librería Versión Por qué
compose:ui BOM 2023.09 UI declarativa
compose:material3 1.1.2 Design System M3
compose:animation BOM Animaciones smooth
compose:foundation BOM Layout + touch handling
compose:runtime BOM State management

BOM (Bill of Materials): versionado coordinado automático

// build.gradle.kts
dependencies {
    implementation(platform(libs.androidx.compose.bom))
    implementation(libs.androidx.compose.ui)
    // versiones automáticas coordinadas
}

Kotlin & Coroutines

Librería Versión Por qué
kotlin:stdlib-jdk8 2.3.10 Runtime Kotlin
kotlinx:coroutines-core 1.7.3 Async/await
kotlinx:coroutines-android 1.7.3 Integration Android
kotlinx:serialization:json 1.6.2 JSON parsing

Networking

Librería Versión Por qué
fuel 2.3.1 HTTP client ligero
okhttp 4.11.0 Transporte HTTP subyacente
okhttp:logging-interceptor 4.11.0 Debug HTTP requests

Por qué Fuel + OKHttp:

  • Fuel es wrapper ligero sobre OKHttp
  • OKHttp es estándar de Android
  • OKHttp soporta certificate pinning

Dependency Injection

Librería Versión Por qué
hilt-android 2.48 DI estándar para Android
hilt-compiler 2.48 Code generation

Nota: RutaPAE usa inyección manual en DomainManager para mayor simplicity.

Persistencia

Librería Versión Por qué
room:runtime 2.6.0 ORM built-in Android
room:ktx 2.6.0 Coroutines support
Personalizado: VectorDB local Índices vectoriales

Por qué custom VectorDB:

  • Room no soporta búsqueda vectorial
  • VectorDB proporciona ORM + índices HNSW
  • Control fino sobre esquema

Background Work

Librería Versión Por qué
androidx:work-runtime-ktx 2.8.1 Scheduled tasks

Uso en RutaPAE: DeliverySyncWorker se ejecuta periódicamente

Security

Librería Versión Por qué
androidx:security:crypto 1.1.0-alpha EncryptedSharedPreferences
google-play-services:integrity 1.2.0 Play Integrity API
tink 1.1.0 Encriptación avanzada

Camera & Multimedia

Librería Versión Por qué
androidx:camera:camera2 1.2.0 Camera2 API
androidx:camera:lifecycle 1.2.0 Lifecycle Camera
androidx:camera:view 1.2.0 Preview composable

Testing

Unit Testing

Librería Versión Por qué
junit 4.13.2 Framework testing
mockito:kotlin 5.1.0 Mocking framework
mockito:inline 5.1.0 Mockear finales
robolectric 4.12.1 Mock Android
kotlinx:coroutines:test 1.7.3 Test coroutines

Android Testing

Librería Versión Por qué
androidx:test:ext-junit 1.1.5 JUnit runner Android
androidx:test:espresso 3.5.1 UI testing framework
androidx:compose:ui:test-junit4 BOM Compose UI tests
androidx:work:work-testing 2.8.1 WorkManager test

Code Coverage

Librería Versión Por qué
jacoco 0.8.8 Code coverage metrics

Computer Vision (Machine)

Librería Versión Por qué
Local: ComputerVision - Modelos IA custom
tensorflow:lite 2.13.0 Inference on-device

Logging

Librería Versión Por qué
Local: Core - Logging abstraction
timber 5.0.1 Logging framework

Build Plugins

plugins {
    id("com.android.application") version "8.1.0"
    id("com.google.dagger.hilt.android") version "2.48"
    kotlin("android") version "2.3.10"
    kotlin("kapt") version "2.3.10"
}

Matriz de dependencias por módulo

                    Machine  RutaPAE  Domain  Data  Contract  Core  DirectLink
android:core-ktx      ✓        ✓       ✓      ✓                ✓       ✓
compose:ui            ✓        ✓
compose:material3     ✓        ✓
coroutines            ✓        ✓       ✓      ✓              ✓       ✓
serialization         ✓        ✓       ✓      ✓       ✓       ✓
fuel/okhttp           ✓        ✓       ✓      ✓       ✓             ✓
hilt                  ✓
room                                   ✓      ✓
VectorDB                               ✓      ✓
security:crypto       ✓        ✓
work:runtime          ✓        ✓
camera:camera2        ✓
tensorflow            ✓
timber                ✓        ✓       ✓      ✓               ✓

Gestión de versiones

Estrategia de versionado

  • Kotlin: 2.3.10 (versión nueva, kotlin multiplatform compatible)
  • Android Gradle Plugin: 8.1.0 (namespace required)
  • Compose: BOM 2023.09 (versionado coordinado)
  • Librerías Android: latest estables (1-2 versiones atrás)

Actualizar dependencias

# Verificar versiones disponibles
./gradlew dependencyUpdates
 
# Actualizar todo
./gradlew :dependencies --refresh-dependencies
 
# Actualizar específico
# Editar gradle/libs.versions.toml y rebuild

Exclusiones comunes

// evitar errores de versión
configurations {
    all {
        exclude group: 'com.google.guava', module: 'guava-jdk5'
    }
}

Librerías no incluidas (y por qué)

Librería Por qué NO
Retrofit Fuel es más ligero
Dagger 2 Hilt es reemplazo modern
RxJava Coroutines son futuro Kotlin
Firebase Proyecto offline-first
Jetpack Paging Lista simple suficiente
Protocol Buffers Serialization JSON suficiente
Realm Room es estándar Google
Ktor Client Fuel/OKHttp suficiente

ProGuard rules

Dependencias de desarrollo

[libraries]
# Testing
junit = "4.13.2"
mockito-kotlin = "5.1.0"
robolectric = "4.12.1"

# Build
gradle = "8.1.0"
kotlin-plugin = "2.3.10"
kotlin-kapt = "2.3.10"

# Linting (optional)
ktlint = "0.49.1"
detekt = "1.23.0"

Resolución de conflictos

Transitive dependencies

./gradlew :app:dependencies | grep -i conflicting
 
# Resolver versión en conflict
./gradlew :app:dependencies | grep "com.google.guava"

Ejemplo: Conflict de Guava

dependencies {
    // Forcing específica
    implementation("com.google.guava:guava:32.1.2-jre") {
        force = true
    }
}

Lock file (Gradle 7.4+)

Generar lock file para reproducibilidad:

./gradlew :app:dependencies --write-locks
 
# Verificar locks en ci
./gradlew :app:dependencies --apply-locks

Referencias

ada/howto/sicoferp/factory/new-migracion-sicoferp/dependencies.txt · Última modificación: 2026/04/07 20:01 por 10.1.62.149