Hilt/Dagger para Kotlin: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução à Injeção de Dependência e às bibliotecas Hilt/Dagger

\n\n

No desenvolvimento moderno de aplicativos em Kotlin (especialmente para Android), um dos conceitos arquitetônicos chave é a Injeção de Dependência (DI). Este é um padrão de projeto no qual um objeto recebe suas dependências de fora, em vez de criá-las por conta própria. Isso torna o código mais flexível, testável e sustentável.

\n\n

Dagger é um poderoso framework para DI, desenvolvido pelo Google, que gera código em tempo de compilação. Ele garante que todas as dependências sejam fornecidas corretamente e elimina erros de tempo de execução relacionados à falta de dependências. No entanto, o Dagger tem uma curva de aprendizado íngreme devido à sua complexidade.

\n\n

Hilt é uma camada sobre o Dagger, criada para simplificar seu uso em aplicativos Android. O Hilt fornece componentes padrão, anotações de escopo e integração automática com o ciclo de vida do Android (Activity, Fragment, ViewModel, etc.). Se você está programando em Kotlin para Android, o Hilt é a escolha recomendada, pois reduz significativamente o código boilerplate.

\n\n

Neste artigo, abordaremos ambas as bibliotecas em detalhes, mas o foco principal será no Hilt, por ser a ferramenta mais moderna e conveniente. Você aprenderá como instalar o Hilt, como usar suas principais anotações e métodos, e também analisaremos exemplos reais e erros comuns.

\n\n

Instalação do Hilt em um projeto Kotlin/Android

\n\n

O Hilt não é instalado via pip ou npm. Ele é integrado ao projeto Gradle. Para Kotlin e Android, o processo é o seguinte:

\n\n

1. Adicionar o plugin Hilt no build.gradle raiz (nível do Projeto)

\n
// build.gradle (Project)\nbuildscript {\n    repositories {\n        google()\n        mavenCentral()\n    }\n    dependencies {\n        // ... outros plugins\n        classpath 'com.google.dagger:hilt-android-gradle-plugin:2.50' // Verifique a versão atual\n    }\n}\n
\n\n

2. Aplicar o plugin no build.gradle do módulo do aplicativo (nível do Módulo)

\n
// build.gradle (Module: app)\nplugins {\n    id 'com.android.application'\n    id 'org.jetbrains.kotlin.android'\n    id 'kotlin-kapt' // Obrigatório para o Hilt\n    id 'dagger.hilt.android.plugin'\n}\n\nandroid {\n    // ... sua configuração\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, mas recomendado)\n    implementation 'androidx.hilt:hilt-navigation-compose:1.1.0' // Para Jetpack Compose\n    // ou\n    implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03' // Para versões antigas\n}\n
\n\n

3. Configurar a classe Application

\n

Todo aplicativo que usa Hilt deve ter uma classe Application anotada com @HiltAndroidApp.

\n
import android.app.Application\nimport dagger.hilt.android.HiltAndroidApp\n\n@HiltAndroidApp\nclass MyApplication : Application() {\n    override fun onCreate() {\n        super.onCreate()\n        // Inicialização do aplicativo\n    }\n}\n
\n

Não se esqueça de especificar esta classe no AndroidManifest.xml:

\n
<application\n    android:name=".MyApplication"\n    ... >\n
\n\n

Início rápido com exemplo de código

\n\n

Vamos criar um exemplo simples: um aplicativo que cumprimenta o usuário, usando Hilt para injetar a dependência Greeter.

\n\n

Passo 1: Crie a classe que será injetada

\n
import javax.inject.Inject\n\nclass Greeter @Inject constructor() {\n    fun greet(name: String): String {\n        return "Olá, $name!"\n    }\n}\n
\n

A anotação @Inject no construtor informa ao Hilt como criar uma instância desta classe.

\n\n

Passo 2: Injeção na Activity

\n
import android.os.Bundle\nimport android.widge                    

Recommendations