55 lines
1.5 KiB
Markdown
55 lines
1.5 KiB
Markdown
暂时不写博客,看[官方教程](https://developer.android.google.cn/training/dependency-injection/hilt-android?hl=zh-cn#generated-components))
|
||
|
||
不纠结于底层细节,就看看在学了Android官方的教程之后的总结
|
||
### 引入依赖
|
||
- 项目根级 `build.gradle.kts`
|
||
```
|
||
plugins {
|
||
// hilt
|
||
id("com.google.dagger.hilt.android") version "2.48.1" apply false
|
||
}
|
||
```
|
||
- app 级 `build.gradle.kts`
|
||
```
|
||
plugins {
|
||
...
|
||
kotlin("kapt")
|
||
id("com.google.dagger.hilt.android")
|
||
}
|
||
|
||
android {
|
||
...
|
||
}
|
||
|
||
dependencies {
|
||
...
|
||
// hilt
|
||
implementation("com.google.dagger:hilt-android:2.48.1")
|
||
kapt("com.google.dagger:hilt-android-compiler:2.48.1")
|
||
}
|
||
|
||
kapt {
|
||
correctErrorTypes = true
|
||
}
|
||
```
|
||
### 为当前的App启用Hilt (必须)
|
||
创建一个 Application 的继承类,在 `AndroidManifest.xml` 中的 `application` 中设置当前的Application,为这个 `Application` 添加 `@HiltAndroidApp`
|
||
|
||
### Android Hilt 使用时的容器及层次结构
|
||
Hilt 的顶层容器是 `Application` 容器, 这些容器,存在层级关系
|
||
- 层级关系如下
|
||
- `SingletonComponent::class` -- `Hilt` 根容器, 就是 Application 容器
|
||
- `ActivityComponent::class` -- ``
|
||
- `FragmentComponent::class`
|
||
- `ViewComponent::class`
|
||
- `ServiceComponent::class`
|
||
- `BroadcastReceiver::class`
|
||
-
|
||
上面的层级关系中,`SingletonComponent` 是最高层次,依次类推
|
||
|
||
### Android Hilt 中的作用
|
||
|
||
- 标注Hilt容器的注解
|
||
- `@HiltAndroidApp`
|
||
- `@AndroidEntryPoint`
|
||
- |