LoginSignup
2
2

More than 5 years have passed since last update.

Dagger2でComponentができない

Posted at

ハマったのでメモ
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"
}
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2