🧩 Hilt 环境搭建

Compose 整合实战
Android · Hilt 2.50
Jetpack Compose · BOM 2024
Gradle · Kotlin DSL

🎯 在正式开始 Hilt + Compose 依赖注入之前,必须搭建稳固的构建环境。本节将手把手带你完成 Hilt 库引入、Gradle 依赖配置、Application 类改造,让项目拥有“开箱即用”的 DI 能力。所有步骤均基于最新稳定版,适配 Android 14+。

📦 第一步:添加 Gradle 依赖

在项目根 build.gradle.kts (或 build.gradle) 中声明 Hilt 插件,然后在 app 模块中引入核心依赖与编译器。

🔹 根级 build.gradle.kts (project)

// 根 build.gradle.kts
plugins {
    id("com.google.dagger.hilt.android") version "2.50" apply false
    id("org.jetbrains.kotlin.android") version "1.9.22" apply false
    id("com.android.application") version "8.2.2" apply false
}

🔹 app/build.gradle.kts (模块级)

plugins {
    id("com.android.application")
    id("org.jetbrains.kotlin.android")
    id("com.google.dagger.hilt.android")
    kotlin("kapt")   // 或 id("kotlin-kapt")
}

android {
    // ... compileSdk = 34, minSdk = 24, targetSdk = 34
}

dependencies {
    // Hilt 核心
    implementation("com.google.dagger:hilt-android:2.50")
    kapt("com.google.dagger:hilt-android-compiler:2.50")

    // Hilt + Compose 整合 (ViewModel 注入)
    implementation("androidx.hilt:hilt-navigation-compose:1.2.0")

    // Compose BOM (可选但推荐)
    implementation(platform("androidx.compose:compose-bom:2024.02.00"))
    implementation("androidx.compose.ui:ui")
    implementation("androidx.compose.material3:material3")
    // ... 其他 compose 依赖
}

// 允许 kapt 处理 Hilt 注解
kapt {
    correctErrorTypes = true
}
依赖版本说明
com.google.dagger:hilt-android2.50Hilt 核心库
hilt-android-compiler2.50注解处理器 (kapt)
androidx.hilt:hilt-navigation-compose1.2.0Compose 导航 + ViewModel 注入
compose-bom2024.02.00统一管理 Compose 版本

🏗️ 第二步:配置 Application 类

创建一个继承 Application 的类,并使用 @HiltAndroidApp 注解。这是 Hilt 组件树的根节点,所有依赖注入的起点。

// MainApplication.kt
package com.example.hiltcompose

import android.app.Application
import dagger.hilt.android.HiltAndroidApp

@HiltAndroidApp
class MainApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        // 可在此初始化全局配置 (例如日志、崩溃收集)
    }
}

⚠️ 别忘了在 AndroidManifest.xml 中声明自定义 Application:

<application
    android:name=".MainApplication"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    ... >
    <activity android:name=".MainActivity" ... />
</application>

🧭 Hilt 组件架构示意

@HiltAndroidApp Application 组件 @AndroidEntryPoint Activity / Fragment @HiltViewModel Compose ViewModel Hilt 组件树 · 自动生成

✅ 第三步:验证集成 & 常见问题

📌 快速检查清单:① 根级插件 ② app 依赖 + kapt ③ Application 注解 ④ Manifest 声明。完成这四步,Hilt 环境即搭建成功!

📁 项目结构预览

app/
├── src/main/
│   ├── java/com/example/hiltcompose/
│   │   ├── MainApplication.kt          ← @HiltAndroidApp
│   │   ├── MainActivity.kt             ← @AndroidEntryPoint
│   │   ├── ui/
│   │   │   └── screen/
│   │   │       └── HomeScreen.kt       ← 使用 hiltViewModel()
│   │   └── viewmodel/
│   │       └── HomeViewModel.kt        ← @HiltViewModel
│   ├── AndroidManifest.xml             ← android:name=".MainApplication"
│   └── res/
├── build.gradle.kts                    ← hilt 插件 + 依赖
└── ...