无法在 Android Dagger 2 中找到 DaggerAppComponent 和 AppComponent 类
Unable to find the DaggerAppComponent and AppComponent classes in Android Dagger 2
我正在使用 Android Studio 和 Kotlin 开发 Android 应用程序。我正在将仪器测试添加到我的项目中。我现在要做的是尝试在我的测试中使用 Dagger 2 将模拟依赖项注入到对象中。我正在学习本教程,https://code.luasoftware.com/tutorials/android/setup-dagger2-for-android-kotlin/。我通过将其添加到我的应用 gradle 依赖项部分来安装所需的依赖项。
implementation 'com.google.dagger:dagger:2.15'
kapt 'com.google.dagger:dagger-compiler:2.15'
provided 'javax.annotation:jsr250-api:1.0'
kapt "com.google.dagger:dagger-android-processor:2.15"
implementation "com.google.dagger:dagger-android:2.15"
implementation "com.google.dagger:dagger-android-support:2.15"
然后我在依赖部分之前添加了以下代码片段
kapt {
generateStubs = true
}
这个我也加了
apply plugin: 'kotlin-kapt'
然后在我的自定义应用程序 class 中,我尝试使用 DaggerAppComponent class。 class 似乎没有随包装一起提供。
我的安装中缺少什么,我该如何修复?
我为 Dagger 使用以下 gradle 依赖项:-
在 version.gradle 文件中
def dagger = [:]
dagger.runtime = "com.google.dagger:dagger:2.24"
dagger.android = "com.google.dagger:dagger-android::2.24"
dagger.android_support = "com.google.dagger:dagger-android-support::2.24"
dagger.compiler = "com.google.dagger:dagger-compiler::2.24"
dagger.android_support_compiler = "com.google.dagger:dagger-android-processor::2.24"
deps.dagger = dagger
build.gradle 的应用程序模块使用以下代码:-
implementation deps.dagger.runtime
implementation deps.dagger.android
implementation deps.dagger.android_support
kapt deps.dagger.android_support_compiler
kapt deps.dagger.compiler
请创建一个`MyApplicationAppInjector class
class MyApplicationAppInjector : AppInjector() {
fun init(app: ApplicationController) {
DaggerMyAppComponent.builder().application(app)
.build().inject(app)
app.registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks {
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
handleActivity(activity as AppCompatActivity)
}
override fun onActivityStarted(activity: Activity) {
}
override fun onActivityResumed(activity: Activity) {
}
override fun onActivityPaused(activity: Activity) {
}
override fun onActivityStopped(activity: Activity) {
}
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle?) {
}
override fun onActivityDestroyed(activity: Activity) {
}
})
}
}
创建 MyAppComponent 接口为:-
@SuppressWarnings("unchecked")
@Singleton
@Component(
modules = [
AndroidInjectionModule::class,
)
interface MyAppComponent {
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
fun build(): MyAppComponent
}
fun inject(app: ApplicationController)
}
创建 class
open class AppInjector {
fun handleActivity(activity: AppCompatActivity) {
if (activity is HasAndroidInjector) {
AndroidInjection.inject(activity)
}
activity.supportFragmentManager
.registerFragmentLifecycleCallbacks(
object : FragmentManager.FragmentLifecycleCallbacks() {
override fun onFragmentCreated(
fm: FragmentManager,
f: Fragment,
savedInstanceState: Bundle?
) {
AndroidSupportInjection.inject(f)
}
}, true
)
}
}
在您的应用程序的 onCreate() 方法中 class
使用此代码:-
`MyApplicationAppInjector().init(this)``
我希望它能解决你的问题
我正在使用 Android Studio 和 Kotlin 开发 Android 应用程序。我正在将仪器测试添加到我的项目中。我现在要做的是尝试在我的测试中使用 Dagger 2 将模拟依赖项注入到对象中。我正在学习本教程,https://code.luasoftware.com/tutorials/android/setup-dagger2-for-android-kotlin/。我通过将其添加到我的应用 gradle 依赖项部分来安装所需的依赖项。
implementation 'com.google.dagger:dagger:2.15'
kapt 'com.google.dagger:dagger-compiler:2.15'
provided 'javax.annotation:jsr250-api:1.0'
kapt "com.google.dagger:dagger-android-processor:2.15"
implementation "com.google.dagger:dagger-android:2.15"
implementation "com.google.dagger:dagger-android-support:2.15"
然后我在依赖部分之前添加了以下代码片段
kapt {
generateStubs = true
}
这个我也加了
apply plugin: 'kotlin-kapt'
然后在我的自定义应用程序 class 中,我尝试使用 DaggerAppComponent class。 class 似乎没有随包装一起提供。
我的安装中缺少什么,我该如何修复?
我为 Dagger 使用以下 gradle 依赖项:- 在 version.gradle 文件中
def dagger = [:]
dagger.runtime = "com.google.dagger:dagger:2.24"
dagger.android = "com.google.dagger:dagger-android::2.24"
dagger.android_support = "com.google.dagger:dagger-android-support::2.24"
dagger.compiler = "com.google.dagger:dagger-compiler::2.24"
dagger.android_support_compiler = "com.google.dagger:dagger-android-processor::2.24"
deps.dagger = dagger
build.gradle 的应用程序模块使用以下代码:-
implementation deps.dagger.runtime
implementation deps.dagger.android
implementation deps.dagger.android_support
kapt deps.dagger.android_support_compiler
kapt deps.dagger.compiler
请创建一个`MyApplicationAppInjector class
class MyApplicationAppInjector : AppInjector() {
fun init(app: ApplicationController) {
DaggerMyAppComponent.builder().application(app)
.build().inject(app)
app.registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks {
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
handleActivity(activity as AppCompatActivity)
}
override fun onActivityStarted(activity: Activity) {
}
override fun onActivityResumed(activity: Activity) {
}
override fun onActivityPaused(activity: Activity) {
}
override fun onActivityStopped(activity: Activity) {
}
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle?) {
}
override fun onActivityDestroyed(activity: Activity) {
}
})
}
}
创建 MyAppComponent 接口为:-
@SuppressWarnings("unchecked")
@Singleton
@Component(
modules = [
AndroidInjectionModule::class,
)
interface MyAppComponent {
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
fun build(): MyAppComponent
}
fun inject(app: ApplicationController)
}
创建 class
open class AppInjector {
fun handleActivity(activity: AppCompatActivity) {
if (activity is HasAndroidInjector) {
AndroidInjection.inject(activity)
}
activity.supportFragmentManager
.registerFragmentLifecycleCallbacks(
object : FragmentManager.FragmentLifecycleCallbacks() {
override fun onFragmentCreated(
fm: FragmentManager,
f: Fragment,
savedInstanceState: Bundle?
) {
AndroidSupportInjection.inject(f)
}
}, true
)
}
}
在您的应用程序的 onCreate() 方法中 class 使用此代码:-
`MyApplicationAppInjector().init(this)``
我希望它能解决你的问题