Esta app es una demostración de librerias que en su conjunto a nivel visual consiguen listar los repositorios de los usuarios previavemente buscados por medio de su buscador utilizando para ello el API Rest de Github.
En primer lugar, necesitas la última versión de Android Studio 4.1.0 (o más reciente) para poder crear la aplicación.
Es necesario el api key de github. Puedes encontrar información sobre cómo obtenerlo en el siguiente enlace.
Cuando obtengas las claves, debes crear un archivo a nivel root en el proyecto llamado api_keys.properties con los siguientes valores:
URL_BASE=api.github.com
API_KEY= [AQUI TU API KEY]
- Jetpack:
- Android KTX - proporciona la base necesaria para el API de jetpack a la plataforma Android.
- AndroidX.
- View Binding - La biblioteca de vinculación de datos es una biblioteca de compatibilidad que permite vincular los componentes de la IU de tus diseños a las fuentes de datos de tu app usando un formato declarativo en lugar de la programación.
- Lifecycle - Los componentes optimizados para ciclos de vida realizan acciones como respuesta a un cambio en el estado del ciclo de vida de otro componente, como actividades o fragmentos.
- LiveData - consciente del ciclo de vida, lo que significa que respeta el ciclo de vida de otros componentes de la aplicación, como las actividades, los fragmentos o los servicios.
- Navigation - le ayuda a implementar la navegación, desde simples clics de botones hasta patrones más complejos, como las barras de aplicaciones y el cajón de navegación.
- Paging - ayuda a cargar y mostrar pequeños trozos de datos a la vez. La carga de datos parciales bajo demanda reduce el uso del ancho de banda de la red y de los recursos del sistema.
- Room - La biblioteca de persistencia proporciona una capa de abstracción sobre SQLite para permitir un acceso más robusto a la base de datos mientras se aprovecha toda la potencia de SQLite.
- ViewModel - diseñado para almacenar y gestionar los datos relacionados con la interfaz de usuario de una manera consciente del ciclo de vida. La clase ViewModel permite que los datos sobrevivan a los cambios de configuración, como las rotaciones de pantalla.
- Coroutines - gestión de hilos en segundo plano con código simplificado y reducción de las necesidades de callbacks.
- Koin - Koin es un marco de inyección de dependencias pragmático y ligero para los desarrolladores de Kotlin.
- Ktor - type-safe HTTP client.
- Glide - Glide es un marco de gestión de medios y carga de imágenes de código abierto, rápido y eficiente, para Android.
- SafeArgs - genera clases simples de objetos y constructores para una navegación segura y el acceso a cualquier argumento asociado.
El módulo :application
es un com.android.application, que es necesario para crear el paquete de aplicaciones. También es responsable de iniciar el gráfico de dependencias, reproducir el núcleo y otras dependencias globales del proyecto, diferenciando especialmente entre los diferentes entornos de la app.
El módulo :domain
es una librería de java que tan solo contiene la lógica de negocio necesaria para hacer funcionar nuestra aplicación definiendo cómo va a funcionar a nivel de datos.
Este módulo :github-sdk
al igual que :domain
es una librería java, pero es la encargada de hacer las peticiones http, no conoce otra cosa que no sea el dominio y no puede exponerse a si misma si no es por medio de la inyección de dependencias gracias a koin
.
El módulo :room
se encarga de guardar en base de datos las búsquedas anteriores para tener un histórico, es una com.android.library, por lo tanto, utiliza las librerias de android para poder funcionar. Al igual que :github-sdk
, no se expone, solo lo hace con koin.