注:這里只是做一個(gè)簡(jiǎn)單的記錄,方便以后查找如何引入。
Hilt簡(jiǎn)介
Hilt 是 Android 的依賴項(xiàng)注入庫(kù),可減少在項(xiàng)目中執(zhí)行手動(dòng)依賴項(xiàng)注入的樣板代碼。執(zhí)行手動(dòng)依賴項(xiàng)注入要求您手動(dòng)構(gòu)造每個(gè)類及其依賴項(xiàng),并借助容器重復(fù)使用和管理依賴項(xiàng)。
Hilt 通過(guò)為項(xiàng)目中的每個(gè) Android 類提供容器并自動(dòng)管理其生命周期,提供了一種在應(yīng)用中使用 DI(依賴項(xiàng)注入)的標(biāo)準(zhǔn)方法。Hilt 在熱門 DI 庫(kù) Dagger 的基礎(chǔ)上構(gòu)建而成,因而能夠受益于 Dagger 的編譯時(shí)正確性、運(yùn)行時(shí)性能、可伸縮性和 Android Studio 支持。
Hilt與Dagger的關(guān)系
Hilt 在依賴項(xiàng)注入庫(kù) Dagger 的基礎(chǔ)上構(gòu)建而成,提供了一種將 Dagger 納入 Android 應(yīng)用的標(biāo)準(zhǔn)方法。
關(guān)于 Dagger,Hilt 的目標(biāo)如下:
- 簡(jiǎn)化 Android 應(yīng)用的 Dagger 相關(guān)基礎(chǔ)架構(gòu)。
- 創(chuàng)建一組標(biāo)準(zhǔn)的組件和作用域,以簡(jiǎn)化設(shè)置、提高可讀性以及在應(yīng)用之間共享代碼。
- 提供一種簡(jiǎn)單的方法來(lái)為各種 build 類型(如測(cè)試、調(diào)試或發(fā)布)配置不同的綁定。
由于 Android 操作系統(tǒng)會(huì)實(shí)例化它自己的許多框架類,因此在 Android 應(yīng)用中使用 Dagger 要求您編寫大量的樣板。Hilt 可減少在 Android 應(yīng)用中使用 Dagger 所涉及的樣板代碼。Hilt 會(huì)自動(dòng)生成并提供以下各項(xiàng):
- 用于將 Android 框架類與 Dagger 集成的組件 - 您不必手動(dòng)創(chuàng)建。
- 作用域注解 - 與 Hilt 自動(dòng)生成的組件一起使用。
-
預(yù)定義的綁定 - 表示 Android 類,如
Application或Activity。 -
預(yù)定義的限定符 - 表示
@ApplicationContext和@ActivityContext。
Dagger 和 Hilt 代碼可以共存于同一代碼庫(kù)中。不過(guò),在大多數(shù)情況下,最好使用 Hilt 管理您在 Android 上對(duì) Dagger 的所有使用。
如何使用Hilt?
- 項(xiàng)目根目錄build.gradle.kts添加支持:
plugins { ... id("com.google.dagger.hilt.android") version "2.44" apply false } - 應(yīng)用模塊build.gradle.kts添加支持,如下:
plugins { kotlin("kapt") id("com.google.dagger.hilt.android") } android { ... } dependencies { implementation("com.google.dagger:hilt-android:2.44") kapt("com.google.dagger:hilt-android-compiler:2.44") } // Allow references to generated code kapt { correctErrorTypes = true } - 其他步驟: