未创建 DaggerAppComponent
DaggerAppComponent not created
使用 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,找不到创建app组件的方法。
在 google tutorial 我看到:
DaggerYourApplicationComponent.create()
.inject(this);
在应用的onCreate中添加。
就我而言 DaggerYourApplicationComponent = DaggerAppComponent
。问题是不再创建 DaggerAppComponent class。
我有:
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"
有了下面列出的依赖项,一切正常:
如果您使用的是 Kotlin
apply plugin: 'kotlin-kapt'
dependencies {
def daggerVer = 2.27 // 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"
}
如果您正在使用 Java:
dependencies {
def daggerVer = 2.27 // 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"
}
您可以找到最新的版本号here。
在 Kotlin 中,我们必须添加 kapt 编译器插件才能使用 Dagger 2。
在您的应用程序 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"
}
See Kotlin
Documentation
最新版本的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"
以我为例(目前使用 kotlin)
我用这个版本gradle
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 工作室(Command + Q)。
删除'app'文件夹内的文件夹"build"
重新打开Android Studio
已创建 DaggerAppComponent。
使用 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,找不到创建app组件的方法。 在 google tutorial 我看到:
DaggerYourApplicationComponent.create()
.inject(this);
在应用的onCreate中添加。
就我而言 DaggerYourApplicationComponent = DaggerAppComponent
。问题是不再创建 DaggerAppComponent class。
我有:
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"
有了下面列出的依赖项,一切正常:
如果您使用的是 Kotlin
apply plugin: 'kotlin-kapt'
dependencies {
def daggerVer = 2.27 // 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"
}
如果您正在使用 Java:
dependencies {
def daggerVer = 2.27 // 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"
}
您可以找到最新的版本号here。
在 Kotlin 中,我们必须添加 kapt 编译器插件才能使用 Dagger 2。
在您的应用程序 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"
}
See Kotlin Documentation
最新版本的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"
以我为例(目前使用 kotlin)
我用这个版本gradle
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 工作室(Command + Q)。
删除'app'文件夹内的文件夹"build"
重新打开Android Studio
已创建 DaggerAppComponent。