Middle
როგორ შევქმნათ და შევცვალოთ Dagger Hilt Android პროგრამაში?
sobes.tech AI
პასუხი AI-სგან
- დამოკიდებულებების დამატება
build.gradle (Project)-ში:
// პროექტის დონეზე build.gradle
buildscript {
ext {
hilt_version = '2.48' // გამოიყენეთ Hilt-ის აქტუალური ვერსია
}
repositories {
google()
mavenCentral()
}
dependencies {
classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
// ... სხვა დამოკიდებულებები
}
}
allprojects {
repositories {
google()
mavenCentral()
// ... სხვა რეპოზიტორები
}
}
- დამოკიდებულებების დამატება
build.gradle (Module)-ში:
// აპლიკაციის დონეზე build.gradle
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-kapt' // 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" // არჩევითი, Android-სპეციფიკური Hilt გაფართოებისთვის
// ... სხვა დამოკიდებულებები
}
- ძირითადი აპლიკაციის კლასი შექმნა
@HiltAndroidAppანოტაციით:
// MyAndroidApp.kt
import android.app.Application
import dagger.hilt.android.HiltAndroidApp
@HiltAndroidApp
class MyAndroidApp : Application() {
// დამატებითი ინიციალიზაცია საჭიროების მიხედვით
}
- შექმნილი კლასი დარეგისტრირება
AndroidManifest.xml-ში:
<!-- AndroidManifest.xml -->
<application
android:name=".MyAndroidApp"
...>
<!-- ... -->
</application>
- Android კომპონენტების (Activity, Fragment, Service და ა.შ.) ანოტაცია
@AndroidEntryPoint-ით:
// MyActivity.kt
import androidx.appcompat.app.AppCompatActivity
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class MyActivity : AppCompatActivity() {
// ...
}
ახლა Hilt-ი მზად არის გამოყენებისთვის, რათა ინექცია განახორციელოს ანოტირებული კლასებში. შეგიძლიათ შექმნათ მოდულები (@Module), უზრუნველყოთ დამოკიდებულებები (@Provides ან @Binds) მოდულებში და ინექცია განახორციელოთ @Inject-ის საშუალებით.
მოდულის მაგალითი:
// 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) // მოდულის ინსტალაცია აპლიკაციის სქოპში
object NetworkModule {
@Provides
@Singleton
fun provideRetrofit(): Retrofit {
return Retrofit.Builder()
// ... Retrofit-ის კონფიგურაცია
.build()
}
// სხვა დამოკიდებულებების მიწოდება
}
დამოკიდებულების ინექციის მაგალითი:
// 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 // Retrofit-ის დამოკიდებულების ინექცია
// ... retrofit-ის გამოყენება
}