ハマったのでメモ
DaggerComponentを参照しようとするとビルドエラーで参照できへんと言われてしまった。
参照しないようにするとビルド通る+コード上だと参照できるのになぜ??
と思っていたんですが、gradleに原因があったようです。
経緯
AppModule.java
@Module
public class AppModule {
private Context context;
public AppModule(Application app) {
context = app;
}
@Provides
public Context provideContext() {
return context;
}
}
AppComponent.java
@Component(modules = AppModule.class)
public interface AppComponent {
ActivityComponent plus(ActivityModule module);
}
こんな感じでModuleとComponentを定義していて、このままだとビルド通るんです。
しかし、ApplicationにDaggerAppComponet
を参照するようにしてビルドすると通らない
CustomApplication.kt
class CustomApplication : Application() {
val appComponent: AppComponent by lazy {
DaggerAppComponent.builder()
.appModule(AppModule(this))
.build()
}
}
なんでや!!!
全然わからんけど、gradleファイルの中に原因があったようです
解決方法
kapt
を入れたらビルドが通りました
-
apply plugin: 'kotlin-kapt'
を入れる -
kapt "com.google.dagger:dagger-compiler:$dagger_version"
を入れる
build.gradle
apply plugin: 'kotlin-kapt'
//..
dependencies {
// Dagger
implementation "com.google.dagger:dagger:$dagger_version"
implementation "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"
kapt "com.google.dagger:dagger-android-processor:$dagger_version"
kapt "com.google.dagger:dagger-compiler:$dagger_version"
}