[英]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()
}
}
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.