Middle
Comment créer et configurer Dagger Hilt dans une application Android ?
sobes.tech IA
Réponse de l'IA
- Ajout des dépendances dans
build.gradle (Project):
// build.gradle au niveau du projet
buildscript {
ext {
hilt_version = '2.48' // Utilisez la version actuelle de Hilt
}
repositories {
google()
mavenCentral()
}
dependencies {
classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
// ... autres dépendances
}
}
allprojects {
repositories {
google()
mavenCentral()
// ... autres dépôts
}
}
- Ajout des dépendances dans
build.gradle (Module):
// build.gradle au niveau du module
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-kapt' // Pour la génération de code Kapt
id 'dagger.hilt.android.plugin'
}
android {
// ...
}
dependencies {
implementation "com.google.dagger:hilt-android:$hilt_version"
kapt "com.google.dagger:hilt-compiler:$hilt_version"
kapt "androidx.hilt:hilt-compiler:1.0.0" // Optionnel, pour les extensions spécifiques à Android de Hilt
// ... autres dépendances
}
- Création de la classe principale de l'application avec l'annotation
@HiltAndroidApp:
// MyAndroidApp.kt
import android.app.Application
import dagger.hilt.android.HiltAndroidApp
@HiltAndroidApp
class MyAndroidApp : Application() {
// Initialisation supplémentaire si nécessaire
}
- Enregistrement de la classe dans
AndroidManifest.xml:
<!-- AndroidManifest.xml -->
<application
android:name=".MyAndroidApp"
...>
<!-- ... -->
</application>
- Annotation des composants Android (Activity, Fragment, Service, etc.) avec
@AndroidEntryPoint:
// MyActivity.kt
import androidx.appcompat.app.AppCompatActivity
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class MyActivity : AppCompatActivity() {
// ...
}
Hilt est maintenant prêt à être utilisé pour l'injection de dépendances dans les classes annotées. Ensuite, vous pouvez créer des modules (@Module), fournir des dépendances (@Provides ou @Binds) dans les modules, et les injecter dans les composants avec @Inject.
Exemple de module :
// NetworkModule.kt
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import retrofit2.Retrofit
import javax.inject.Singleton
@Module
@InstallIn(SingletonComponent::class) // Installation du module dans le scope de l'application
object NetworkModule {
@Provides
@Singleton
fun provideRetrofit(): Retrofit {
return Retrofit.Builder()
// ... configuration de Retrofit
.build()
}
// Autres provisions de dépendances
}
Exemple d'injection de dépendance :
// MyActivity.kt
import androidx.appcompat.app.AppCompatActivity
import dagger.hilt.android.AndroidEntryPoint
import retrofit2.Retrofit
import javax.inject.Inject
@AndroidEntryPoint
class MyActivity : AppCompatActivity() {
@Inject
lateinit var retrofit: Retrofit // Injection de la dépendance Retrofit
// ... utilisation de retrofit
}