Dependency Injection
Hilt হচ্ছে মূলত অ্যানড্রয়েড অ্যাপ্লিকেশন এ ডিপেন্ডেন্সি ইনজেকশন ফ্রেমওয়ার্ক। Dagger নামক লাইব্রেরির উপর Hilt ফ্রেমওয়ার্ক কাজ করে।
যখন @HiltAndroidApp এনোটেশন অ্যাপ্লিকেশনে ব্যবহার করা হয়, তখন
- Hilt ফ্রেমওয়ার্ক অ্যাপ্লিকেশন ডিপেন্ডেন্সি ইনজেকশন এর জন্য রেডি করে
- Hilt তলে তলে Dagger কম্পোনেন্ট এবং মডিউল তৈরি করে ফেলে
Hilt কে অ্যাপ্লিকেশন এ যুক্ত করতে নিচের কাজ করতে হয়
১।টপ লেভেল build.gradle.kts এ প্লাগিন যুক্ত করা
plugins {
......
id("com.google.dagger.hilt.android") version "2.50" apply false
}
২। মডিউল লেভেল build.gradle.kts এ প্লাগিন নিচের যুক্ত করা
plugins { ..... id("dagger.hilt.android.plugin") kotlin("kapt") }
৩। মডিউল লেভেল build.gradle.kts এ Hilt এর ডিপেন্ডেন্সি যুক্ত করা
dependencies { ......... kapt("com.google.dagger:hilt-compiler:2.50") implementation("com.google.dagger:hilt-android:2.50") implementation("androidx.hilt:hilt-navigation-compose:1.2.0") }
৪। মডিউল লেভেল build.gradle.kts এ Kapt ব্লক যুক্ত করা
kapt {
correctErrorTypes = true
}
৫। একটা ক্লাসে @HiltAndroidApp যুক্ত করা
@HiltAndroidApp
class MemoryApp : Application()
৬। MainActivity ক্লাসে @AndroidEntryPoint যুক্ত করা
@AndroidEntryPoint class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { MemoryUI() } } }
৭। DependencyConfig তৈরি করা
@Module
@InstallIn(SingletonComponent::class)
class ApiConfig {
........
@Provides
@Singleton
fun provideReminderService(retrofit: Retrofit): ReminderApi =
retrofit.create(ReminderApi::class.java)
......
}
৮। ফাইনালি @Inject ব্যবহার করে ডিপেন্ডেন্সি ইনজেক্ট করা
class ReminderRepository @Inject constructor( private val reminderApi: ReminderApi ) { ..... }
ViewModel এ Repository ইনজেক্ট করা
@HiltViewModel class ReminderViewModel @Inject constructor( private val reminderRepository: ReminderRepository ) : ViewModel() { ...... }