在 Android 專案中導入 Hilt 依賴注入框架指南

更新於 發佈於 閱讀時間約 10 分鐘
raw-image
【Android Hilt 依賴注入完整教學】系列文章目錄:連結
Youtube 教學頻道:HKT線上教室

在開發 Android 應用程式時,相依性注入(Dependency Injection)是一個非常重要的設計模式,能夠幫助我們建立更好的程式架構。今天要介紹的 Hilt 是由 Google 官方推出的相依性注入框架,它是基於 Dagger 所開發的,但提供了更簡單的使用方式。

Hilt 的優勢

相較於其他相依性注入框架(如 Dagger、Koin 等),Hilt 具有以下優點:

  • 設定簡單,學習曲線較緩
  • 與 Android 架構元件完美整合
  • Google 官方維護,確保長期支援
  • 基於 Dagger 開發,效能優異

專案設定步驟

本篇教學採用 Kotlin DSL 語法來撰寫 Gradle 設定檔。如果你的專案還在使用傳統的 Groovy 語法,可以參考 Android Developer 官方文件的說明來調整語法。由於目前業界主流已逐漸轉向使用 Kotlin DSL,本文將著重介紹這個版本的設定方式。

1. 在根目錄的 build.gradle 加入 Hilt 外掛程式

首先,在專案根目錄的 build.gradle 檔案中加入以下設定:

plugins {
// 其他外掛程式...
id("com.google.dagger.hilt.android") version "2.51.1" apply false
}

2. 設定應用程式模組的 build.gradle

在應用程式模組的 build.gradle 中,需要啟用以下外掛程式並加入相依套件:

plugins {
id("kotlin-kapt") // 用於註解處理
id("com.google.dagger.hilt.android")
}

android {
// 啟用 Java 17 功能支援
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
}

dependencies {
implementation("com.google.dagger:hilt-android:2.51.1")
kapt("com.google.dagger:hilt-android-compiler:2.51.1")
}

// 允許參考產生的程式碼
kapt {
correctErrorTypes = true
}

3. 建立應用程式類別

建立一個繼承 Application 的類別,並加上 @HiltAndroidApp 註解:

@HiltAndroidApp
class MyApplication : Application() {
}

4. 在 AndroidManifest.xml 中註冊

AndroidManifest.xml 中設定應用程式類別:

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

5. 在元件中使用相依性注入

要在 Activity、Fragment、Service 或 BroadcastReceiver 中使用相依性注入,需要加上 @AndroidEntryPoint 註解:

@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
// 在這裡進行相依性注入
}

使用 Version Catalog 管理相依性

如果你的專案使用了 Gradle 的 Version Catalog 功能(即 libs.versions.toml),以下是建議的設定方式:

在 gradle/libs.versions.toml 中宣告版本

[versions]
hilt = "2.51.1"
hiltExt = "1.2.0"
agp = "8.2.2" # Android Gradle Plugin 版本
kotlin = "1.9.22" # Kotlin 版本

[libraries]
hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" }
hilt-compiler = { group = "com.google.dagger", name = "hilt-android-compiler", version.ref = "hilt" }
# Hilt Extensions 相關套件
hilt-ext-compiler = { group = "androidx.hilt", name = "hilt-compiler", version.ref = "hiltExt" }
hilt-ext-work = { group = "androidx.hilt", name = "hilt-work", version.ref = "hiltExt" }
hilt-ext-navigation = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "hiltExt" }

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
android-library = { id = "com.android.library", version.ref = "agp" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
ksp = { id = "com.google.devtools.ksp", version = "1.9.22-1.0.17" } # KSP 版本需要與 Kotlin 版本相匹配
hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }

在應用程式模組的 build.gradle.kts 中使用

plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.ksp) // 使用 KSP 取代 kapt
alias(libs.plugins.hilt)
}

android {
// 啟用 Java 17 功能支援
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}

kotlinOptions {
jvmTarget = "17"
}
}

dependencies {
implementation(libs.hilt.android)
ksp(libs.hilt.compiler) // 使用 KSP 取代 kapt

// Hilt Extensions 相關依賴
ksp(libs.hilt.ext.compiler) // 使用 KSP 取代 kapt

// 根據需求選擇性添加:
// WorkManager 整合
implementation(libs.hilt.ext.work)
// Jetpack Compose Navigation 整合
implementation(libs.hilt.ext.navigation)
}

結語

以上就是在 Android 專案中設定 Hilt 的基本步驟。相較於直接使用 Dagger,Hilt 大幅簡化了相依性注入的設定流程。在下一篇文章中,我們將介紹如何使用 Hilt 進行欄位注入(Field Injection)的實作。

avatar-img
15會員
261內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
留言
avatar-img
留言分享你的想法!

































































HKT實驗室 的其他內容
本篇文章詳細說明了為何在評估 Dagger、Hilt 和 Koin 三個依賴注入框架後,選擇 Hilt 作為目前 Android 開發的最佳選擇。Hilt 在開發效率最佳化、Google 官方支援、繼承 Dagger 的優點並克服其缺點,以及相較於 Koin 的優勢等方面表現突出。
本篇文章介紹 Android 開發中的依賴注入(Dependency Injection,DI)概念,強調其在現代開發中的重要性。依賴注入能解決類別之間的緊密耦合問題,提升程式碼的可重用性、測試便利性及重構的容易性。文章中舉例說明了未使用依賴注入的缺陷,並展示了使用依賴注入的改良方案。
本文提供全面的 Android Hilt 依賴注入框架完整教學目錄,涵蓋基礎概念、注入方式、進階功能及測試實務。透過這些內容,開發者能夠深入理解並有效學習並運用 Android Hilt 進行依賴注入 Dependency Injection。
本篇文章展示 Android 開發中 Hilt 依賴注入的運用。它基於 Kotlin、Jetpack Compose 等技術搭建,採用 MVVM 架構,利用 Room 存儲數據。Hilt 通過多種注解實現依賴注入,可助學習 Hilt 等多項技術。
本篇文章詳細介紹如何在 Android 開發中使用 Dagger 2 進行依賴注入,並提供 GitHub 開源程式碼連結。專案基於 MVVM 架構,採用 Jetpack Compose 構建現代化 UI,展示實際應用中的最佳實踐。
在現代 Android 開發中,依賴注入(Dependency Injection, DI)是構建可維護、可測試程式碼的關鍵技術。Dagger 作為 Google 推出的依賴注入框架,透過編譯時代碼生成大幅提升效能。本文將以 Kotlin 示範 Dagger 的實際應用。 一、導入 Dagger
本篇文章詳細說明了為何在評估 Dagger、Hilt 和 Koin 三個依賴注入框架後,選擇 Hilt 作為目前 Android 開發的最佳選擇。Hilt 在開發效率最佳化、Google 官方支援、繼承 Dagger 的優點並克服其缺點,以及相較於 Koin 的優勢等方面表現突出。
本篇文章介紹 Android 開發中的依賴注入(Dependency Injection,DI)概念,強調其在現代開發中的重要性。依賴注入能解決類別之間的緊密耦合問題,提升程式碼的可重用性、測試便利性及重構的容易性。文章中舉例說明了未使用依賴注入的缺陷,並展示了使用依賴注入的改良方案。
本文提供全面的 Android Hilt 依賴注入框架完整教學目錄,涵蓋基礎概念、注入方式、進階功能及測試實務。透過這些內容,開發者能夠深入理解並有效學習並運用 Android Hilt 進行依賴注入 Dependency Injection。
本篇文章展示 Android 開發中 Hilt 依賴注入的運用。它基於 Kotlin、Jetpack Compose 等技術搭建,採用 MVVM 架構,利用 Room 存儲數據。Hilt 通過多種注解實現依賴注入,可助學習 Hilt 等多項技術。
本篇文章詳細介紹如何在 Android 開發中使用 Dagger 2 進行依賴注入,並提供 GitHub 開源程式碼連結。專案基於 MVVM 架構,採用 Jetpack Compose 構建現代化 UI,展示實際應用中的最佳實踐。
在現代 Android 開發中,依賴注入(Dependency Injection, DI)是構建可維護、可測試程式碼的關鍵技術。Dagger 作為 Google 推出的依賴注入框架,透過編譯時代碼生成大幅提升效能。本文將以 Kotlin 示範 Dagger 的實際應用。 一、導入 Dagger
你可能也想看
Google News 追蹤
本課程學習如何使用 Intent 傳遞整包資料。
Thumbnail
本課程學習如何在 Kotlin 程式碼檔案中,設定 ImageView 圖片元件,顯示本地端圖片。
本課程學習如何在 Kotlin 程式碼檔案中,設定 Toast 浮動式訊息元件,顯示提示文字訊息。
本課程主要學習 Android Studio 建立初始(Empty View Activity)專案中的重要目錄資料夾和檔案。
Thumbnail
本課程學習如何使用 Android Studio 建立的第一個應用程式專案:Hello World。
Thumbnail
本篇文章將介紹開發 Android 手機應用程式所需的開發軟體,Google 官方的開發工具 Android Studio。這款軟體不僅免費,還提供完整的支援,適合所有 Android 開發者使用。
Thumbnail
根據初學者設計了 Kotlin 程式語言的基礎課程,從 Android Studio 到 Android App 開發,提供完整指引。由基礎開始,傳授開發技巧。課程分為三部分:環境安裝、常用元件與界面設計,以及高階技巧如 DataStore、Room 資料儲存與網路處理。
Thumbnail
Kotlin 是 Google 官方推薦的 Android 開發語言,具有簡潔、安全、高效等優點,受到越來越多開發者的青睞。如果你也想學習 Kotlin,卻不知道從哪裡開始,那麼這本【Kotlin 入門指南】就是你的最佳選擇。
本課程學習如何使用 Intent 傳遞整包資料。
Thumbnail
本課程學習如何在 Kotlin 程式碼檔案中,設定 ImageView 圖片元件,顯示本地端圖片。
本課程學習如何在 Kotlin 程式碼檔案中,設定 Toast 浮動式訊息元件,顯示提示文字訊息。
本課程主要學習 Android Studio 建立初始(Empty View Activity)專案中的重要目錄資料夾和檔案。
Thumbnail
本課程學習如何使用 Android Studio 建立的第一個應用程式專案:Hello World。
Thumbnail
本篇文章將介紹開發 Android 手機應用程式所需的開發軟體,Google 官方的開發工具 Android Studio。這款軟體不僅免費,還提供完整的支援,適合所有 Android 開發者使用。
Thumbnail
根據初學者設計了 Kotlin 程式語言的基礎課程,從 Android Studio 到 Android App 開發,提供完整指引。由基礎開始,傳授開發技巧。課程分為三部分:環境安裝、常用元件與界面設計,以及高階技巧如 DataStore、Room 資料儲存與網路處理。
Thumbnail
Kotlin 是 Google 官方推薦的 Android 開發語言,具有簡潔、安全、高效等優點,受到越來越多開發者的青睞。如果你也想學習 Kotlin,卻不知道從哪裡開始,那麼這本【Kotlin 入門指南】就是你的最佳選擇。