ダガー2.10では、次のようにしてアプリコンポーネントを作成できました。
sAppComponent = DaggerAppComponent.builder()
.appModule(new AppModule(this))
.sessionModule(new SessionModule())
.netModule(new NetModule())
.dataModule(new DataModule())
.build();
私はすでにアクティビティにAndroidInjectorを使用しており、すべてが順調でした。今では2.11に切り替えましたが、アプリコンポーネントを作成する方法が見つかりません。 googleチュートリアル で:
DaggerYourApplicationComponent.create()
.inject(this);
アプリケーションのonCreateに追加されます。私の場合 DaggerYourApplicationComponent = DaggerAppComponent
。問題は、DaggerAppComponentクラスがもう作成されていないことです。
私が持っています:
public class App extends Android.support.multidex.MultiDexApplication implements HasActivityInjector {
@Inject DispatchingAndroidInjector<Activity> mDispatchingActivityInjector;
@Override
public void onCreate() {
super.onCreate();
sAppComponent = DaggerAppComponent.create().inject(this); //here the error
そして:
@Singleton
@Component(modules = {
AppModule.class,
MainActivityModule.class,
...
})
public interface AppComponent {
void inject(App app);
...
}
私が持っているbuild.gradleファイル:
def daggerVer = 2.11
compile "com.google.dagger:dagger:$daggerVer"
compile "com.google.dagger:dagger-Android-support:$daggerVer"
annotationProcessor "com.google.dagger:dagger-Android-processor:$daggerVer"
ノイズでごめんね。私の愚かな間違い:2.11に切り替えたときに、build.gradleセクションを google tutorial からコピーしました。
annotationProcessor "com.google.dagger:dagger-compiler:$daggerVer"
私が知らない理由でリストされていません。以下にリストされた依存関係ですべてが機能します:
def daggerVer = 2.12 // or latest version
implementation "com.google.dagger:dagger:$daggerVer"
implementation "com.google.dagger:dagger-Android-support:$daggerVer"
annotationProcessor "com.google.dagger:dagger-Android-processor:$daggerVer"
annotationProcessor "com.google.dagger:dagger-compiler:$daggerVer"
Kotlinを使用している場合
apply plugin: 'kotlin-kapt'
dependencies {
def daggerVer = 2.12 // or latest version
implementation "com.google.dagger:dagger:$daggerVer"
implementation "com.google.dagger:dagger-Android-support:$daggerVer"
kapt "com.google.dagger:dagger-Android-processor:$daggerVer"
kapt "com.google.dagger:dagger-compiler:$daggerVer"
}
Kotlinでは、kaptコンパイラプラグインを追加して、Dagger 2を使用する必要があります。
アプリのグラドルで、このプラグインを追加します
apply plugin: 'kotlin-kapt'
そして、以下のように依存関係を追加します
dependencies
{
implementation "com.google.dagger:dagger:$latest_version"
kapt "com.google.dagger:dagger-compiler:$latest_version"
implementation "com.google.dagger:dagger-Android:$latest_version"
kapt "com.google.dagger:dagger-Android-processor:$latest_version"
implementation "com.google.dagger:dagger-Android-support:$latest_version"
kapt "com.google.dagger:dagger-Android-support:2.12"
}
Kotlinを参照してください ドキュメント