Introducción a la Inyección de Dependencias y las bibliotecas Hilt/Dagger
\n\nEn el desarrollo moderno de aplicaciones en Kotlin (especialmente para Android), uno de los conceptos arquitectónicos clave es la Inyección de Dependencias (DI). Es un patrón de diseño en el que un objeto recibe sus dependencias desde el exterior, en lugar de crearlas por sí mismo. Esto hace que el código sea más flexible, comprobable y mantenible.
\n\nDagger es un potente framework para DI, desarrollado por Google, que genera código en tiempo de compilación. Garantiza que todas las dependencias se proporcionen correctamente y elimina los errores en tiempo de ejecución relacionados con la falta de dependencias. Sin embargo, Dagger tiene una curva de aprendizaje pronunciada debido a su complejidad.
\n\nHilt es una capa sobre Dagger, creada para simplificar su uso en aplicaciones Android. Hilt proporciona componentes estándar, anotaciones de ámbito e integración automática con el ciclo de vida de Android (Activity, Fragment, ViewModel, etc.). Si estás escribiendo en Kotlin para Android, Hilt es la opción recomendada, ya que reduce significativamente el código repetitivo (boilerplate).
\n\nEn este artículo, analizaremos ambas bibliotecas en detalle, pero nos centraremos principalmente en Hilt, por ser la herramienta más moderna y conveniente. Aprenderás cómo instalar Hilt, cómo usar sus anotaciones y métodos principales, y también analizaremos ejemplos reales y errores típicos.
\n\nInstalación de Hilt en un proyecto Kotlin/Android
\n\nHilt no se instala a través de pip o npm. Se integra en un proyecto Gradle. Para Kotlin y Android, el proceso es el siguiente:
\n\n1. Agregar el plugin de Hilt en el build.gradle raíz (a nivel de proyecto)
\n// build.gradle (Project)\nbuildscript {\n repositories {\n google()\n mavenCentral()\n }\n dependencies {\n // ... otros plugins\n classpath 'com.google.dagger:hilt-android-gradle-plugin:2.50' // Verifique la versión actual\n }\n}\n\n\n2. Aplicar el plugin en el build.gradle del módulo de la aplicación (a nivel de módulo)
\n// build.gradle (Module: app)\nplugins {\n id 'com.android.application'\n id 'org.jetbrains.kotlin.android'\n id 'kotlin-kapt' // Obligatorio para Hilt\n id 'dagger.hilt.android.plugin'\n}\n\nandroid {\n // ... su configuración\n}\n\ndependencies {\n implementation 'com.google.dagger:hilt-android:2.50'\n kapt 'com.google.dagger:hilt-compiler:2.50'\n\n // Para ViewModel (opcional, pero recomendado)\n implementation 'androidx.hilt:hilt-navigation-compose:1.1.0' // Para Jetpack Compose\n // o\n implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03' // Para versiones antiguas\n}\n\n\n3. Configurar la clase Application
\nToda aplicación que use Hilt debe tener una clase Application anotada con @HiltAndroidApp.
import android.app.Application\nimport dagger.hilt.android.HiltAndroidApp\n\n@HiltAndroidApp\nclass MyApplication : Application() {\n override fun onCreate() {\n super.onCreate()\n // Inicialización de la aplicación\n }\n}\n\nNo olvides especificar esta clase en el AndroidManifest.xml:
<application\n android:name=".MyApplication"\n ... >\n\n\nInicio rápido con un ejemplo de código
\n\nVamos a crear un ejemplo simple: una aplicación que saluda al usuario, usando Hilt para inyectar la dependencia Greeter.
Paso 1: Crear la clase que se va a inyectar
\nimport javax.inject.Inject\n\nclass Greeter @Inject constructor() {\n fun greet(name: String): String {\n return "Hello, $name!"\n }\n}\n\nLa anotación @Inject en el constructor le dice a Hilt cómo crear una instancia de esta clase.
Paso 2: Inyección en una Activity
\nimport android.os.Bundle\nimport android.widge También en la biblioteca
msw para TypeScript: guía completa con ejemplos prácticos
Envío de SMS en Kotlin: Biblioteca API smslib4k
gRPC para Kotlin: bibliotecas, servidor y cliente — ejemplos de código