添加依赖项 首先,将hilt-android-gradle-plugin
添加到项目的根级build.gradle
文件中:
buildscript { ... dependencies { ... classpath 'com.google.dagger:hilt-android-gradle-plugin:2.38.1' } }
然后,应用Gradle插件并在app/build.gradle
文件添加依赖:
plugins { ... id 'kotlin-kapt' id 'dagger.hilt.android.plugin' //老版本的gradle方式略有不同 apply plugin:'dagger.hilt.android.plugin' } dependencies { implementation "com.google.dagger:hilt-android:2.38.1" kapt "com.google.dagger:hilt-android-compiler:2.38.1" }
Hilt使用Java 8 功能 。如果需要在项目中启用Java 8
,请将以下代码添加到app/build.gradle
文件中:
android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
Hilt应用类 所有使用Hilt的应用都必须包含一个带有@HiltAndroidApp
注释的Application
类
@HiltAndroidApp
会触发Hilt的代码生成操作,生成的代码包括应用的一个基类,该基类充当应用级依赖项容器。
@HiltAndroidApp class HiltApplication : Application () {}
Build Project
后会生成一个Hilt_HiltApplication
的抽象类
public abstract class Hilt_HiltApplication extends Application implements GeneratedComponentManagerHolder { private final ApplicationComponentManager componentManager = new ApplicationComponentManager(new ComponentSupplier() { @Override public Object get () { return DaggerHiltApplication_HiltComponents_SingletonC.builder() .applicationContextModule(new ApplicationContextModule(Hilt_HiltApplication.this )) .build(); } }); @Override public final ApplicationComponentManager componentManager() { return componentManager; } @Override public final Object generatedComponent() { return this .componentManager().generatedComponent(); } @CallSuper @Override public void onCreate() { ((HiltApplication_GeneratedInjector) generatedComponent()).injectHiltApplication(UnsafeCasts.<HiltApplication>unsafeCast(this )); super .onCreate(); } }
将依赖注入Android类 在 Application
类中设置了 Hilt 且有了应用级组件后,Hilt 可以为带有 @AndroidEntryPoint
注释的其他 Android 类提供依赖项:
@AndroidEntryPoint public class MainActivity extends AppCompatActivity { ... }
Hilt 目前支持以下Android类:
Application
(通过使用@HiltAndroidApp
)
Activity
(Hilt仅支持扩展ComponentActivity
的Activity,如AppCompactActivity
)
Fragment
(不支持保留的Fragment
,仅支持扩展androidx.Fragment
的Fragment)
View
Service
BroadcastReceiver