简体   繁体   English

未生成Android Kotlin Dagger 2组件

[英]Android Kotlin Dagger 2 component not generated

I have no Idea why my DaggerComponent is not generated after rebuild the project. 我不知道为什么重建项目后未生成我的DaggerComponent。

@Scope
@Retention(AnnotationRetention.RUNTIME)
annotation class NewsScope

@NewsScope
@Component(
    dependencies = [BaseComponent::class],
    modules = [NewsModule::class]
)
interface NewsComponent {
    fun newsManager(): NewsManager
}

@NewsScope
@Component(
    dependencies = [BaseComponent::class],
    modules = [NewsModule::class]
)
interface NewsComponent {
    fun newsManager(): NewsManager
}

@Module
class NewsModule {

    @NewsScope
    @Provides
    fun provideMoshiConverterFactory(): MoshiConverterFactory {
        val moshi = Moshi.Builder().build()
        return MoshiConverterFactory.create(moshi)
    }

    @NewsScope
    @Provides
    fun provideNewsApi(okHttpClient: OkHttpClient): NewsApi {
        val moshi = Moshi.Builder().build()

        val retrofit = Retrofit.Builder()
            .client(okHttpClient)
            .baseUrl(NewsApi.API_URL)
            .addCallAdapterFactory(RxJavaCallAdapterFactory
                .createWithScheduler(Schedulers.io()))
            .addConverterFactory(MoshiConverterFactory.create(moshi))
            .build()

        val retrofitApi = retrofit.create(RetrofitNewsApi::class.java)

        return RetrofitNewsApiImpl(retrofitApi)
    }

    @NewsScope
    @Provides
    fun provideNewsManager(newsApi: NewsApi): NewsManager {
        return NewsManager(newsApi)
    }
}

class NewsFragment : BaseFragment() {
    @Inject lateinit var newsManager: NewsManager private set


    override fun onCreate(savedInstanceState: Bundle?) {
        newsManager = DaggerNewsComponent.builder() 
            .baseComponent(baseComponent())
            .newsModule(NewsModule())
            .build().newsManager()
    }
}
  • *** DaggerNewsComponent not Generated ***未生成DaggerNewsComponent
  • $dagger_version = "2.23.2" $ dagger_version =“ 2.23.2”
  • AndroidX was implemented 实施了AndroidX
  • I am a iOS Pro but Android Noob 我是iOS Pro但Android Noob

    implementation "com.google.dagger:dagger:$dagger_version" implementation "com.google.dagger:dagger-android:$dagger_version" implementation "com.google.dagger:dagger-android-support:$dagger_version" 实现“ com.google.dagger:dagger:$ dagger_version”实现“ com.google.dagger:dagger-android:$ dagger_version”实现“ com.google.dagger:dagger-android-support:$ dagger_version”

    annotationProcessor "com.google.dagger:dagger-android- processor:$dagger_version" annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version" 注解处理器“ com.google.dagger:dagger-android-处理器:$ dagger_version”注解处理器“ com.google.dagger:dagger-compiler:$ dagger_version”

You should use kapt next to annotationProcessor 您应该在annotationProcessor旁边使用kapt

kapt 'com.google.dagger:dagger-android-processor:2.23.2'
kapt 'com.google.dagger:dagger-compiler:2.23.2'

and add apply plugin: 'kotlin-kapt' at top of your build.gradle 并加入apply plugin: 'kotlin-kapt'在你之上build.gradle

Yes and also add 是的,还添加

android {
    kapt {
        generateStubs = true
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM