38 puntos por xguru 2025-03-12 | 7 comentarios | Compartir por WhatsApp

Introducción al entorno actual de desarrollo de apps Android

  • Build: gradle
  • Configuración de build: convention plugin
  • Gestión de dependencias: version catalog
  • Implementación de build cache
  • Análisis del rendimiento de build: build-scan
  • Estructura de módulos: separación por feature
  • Networking: retrofit
  • Mapeo de JSON: kotlinx serialization
  • Almacenamiento persistente de datos: jetpack datastore, room
  • DI: koin
  • Cargador de imágenes: coil
  • UI: compose
  • Comunicación entre View y ViewModel: flow
  • Control de calidad del código: ktlint, konsist
  • Pruebas unitarias: junit 4

7 comentarios

 
kipsong133 2025-03-13

Gracias por el buen artículo.

 
ganadist 2025-03-12

Como alguien que por azares de la vida terminó asentándose como ingeniero de build de apps Android, si dejara una opinión...

> Build: gradle

Aunque sea muy grande o muy complejo, hay que usar gradle... (mirando al horizonte)
Como se están llevando adelante los siguientes proyectos para mejorar el rendimiento de build de gradle en proyectos muy grandes o complejos, si usan gradle en un proyecto grande conviene ir preparando la migración con anticipación.

> Configuración de módulos: separación por feature

Personalmente, no veo razón para exponer innecesariamente las capas de arquitectura al sistema de build.
En el caso de la app que administro, hacemos que el sistema de build exponga los módulos como feature-api / feature-impl.

  • feature-app :
    • Modelo de datos, o interfaces vinculadas con otros módulos
  • feature-impl:
    • Implementación real de la feature

Si se configura así, los cambios de código en feature-impl no afectan a otros módulos que referencian feature-api (aislamiento de dependencias), así que ayuda mucho a mejorar el incremental build y la tasa de aciertos del build cache.

> Pruebas unitarias - junit 4

Creo que aquí la decisión de Google tuvo un papel importante.

 
ganadist 2025-03-12

Sin embargo, para adoptar tecnología moderna (?), JUnit4 a menudo termina siendo un obstáculo, así que personalmente tengo el pequeño deseo de que se migre a JUnit5.
https://docs.gradle.com/develocity/test-distribution/

Si usas junit-vintage-engine, puedes ejecutar las pruebas de junit4 en junit5 sin cambios grandes, pero la sobrecarga es considerable. (aproximadamente un 20% más lento)

 
kingori 2025-03-12

Vaya, qué honor para la familia Hutt.

 
gera1d 2025-03-14

¡Soy Wilson!

 
brainer 2025-03-12

Mmm... como comentario al margen, en los últimos años se ha observado un fenómeno curioso: la mayoría de las startups usan Flutter, mientras que las grandes empresas como META y OpenAI optan por nativo..

 
tsboard 2025-03-12

Justo este año estoy pensando en intentar hacer una app para Android, así que fue una guía muy útil. Jaja