使用dagger 2.10,我曾经可以通过
创建应用程序组件 sAppComponent = DaggerAppComponent.builder()
.appModule(new AppModule(this))
.sessionModule(new SessionModule())
.netModule(new NetModule())
.dataModule(new DataModule())
.build();
我已经在使用AndroidInjector for Activities,一切都很好。 现在我切换到2.11,我找不到创建应用程序组件的方法。 在google tutorial我看到:
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"
答案 0 :(得分:38)
好对不起噪音。我的愚蠢错误:当我切换到2.11时,我从google tutorial复制了build.gradle部分,其中依赖:
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"
}
答案 1 :(得分:7)
在 Kotlin 中,我们必须添加 kapt 编译器插件才能使用Dagger 2.
在你的app gradle中,添加此插件
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 Documentation
答案 2 :(得分:0)
Dagger2的最新版本仅支持Gradle中的以下设置: https://github.com/google/dagger#gradle
def daggerVer = 2.24 // or latest version
api "com.google.dagger:dagger:$daggerVer"
annotationProcessor "com.google.dagger:dagger-compiler:$daggerVer"
api "com.google.dagger:dagger-android:$daggerVer"
api "com.google.dagger:dagger-android-support:$daggerVer" // if you use the support libraries
annotationProcessor "com.google.dagger:dagger-android-processor:$daggerVer"
答案 3 :(得分:0)
就我而言(当前使用Kotlin)
我使用此构建包
implementation 'com.google.dagger:dagger:2.24'
annotationProcessor 'com.google.dagger:dagger-compiler:2.24'
annotationProcessor 'com.google.dagger:dagger-android-processor:2.24'
implementation 'com.google.dagger:dagger-android-support:2.24'
在同步gradle之后,
我退出了Android Studio(Command + Q)。
在“ app”文件夹中删除“ build”文件夹
重新打开Android Studio
DaggerAppComponent已创建。