仅当我在ActivityBuilder中添加Cannot find symbol class DaggerAppComponent
批注后,在构建应用程序时,我一直收到@ContributesAndroidInjector
错误。
我有一个概念验证项目,该项目具有完全相同的设置,并且可以很好地构建/工作。真的不知道为什么现在不构建。
这是我所拥有的:
AppComponent :
@Singleton
@Component(modules = {
AndroidInjectionModule.class,
AppModule.class,
ActivityBuilder.class})
public interface AppComponent {
void inject(MyApplication application);
@Component.Builder
interface Builder {
@BindsInstance
Builder application(Application application);
AppComponent build();
}}
AppModule
@Module
public class AppModule {
@Provides
@Singleton
PrefsHelper providePrefsHelper(PrefsHelperImpl prefsHelper) {
return prefsHelper;
}
@Provides
@Singleton
DataManager provideDataManager(DataManagerImpl dataManager) {
return dataManager;
}
@Provides
@Singleton
Context provideContext(Application application) {
return application;
}
@Provides
SchedulerProvider provideSchedulerProvider() {
return new SchedulerProviderImpl();
}
@Provides
@PrefsInfo
String providePreferencesName() {
return C.PREFS_NAME;
}
}
ActivityBuilder
@Module
public abstract class ActivityBuilder {
@ContributesAndroidInjector(modules = {
MainActivityModule.class})
abstract MainActivity bindMainActivity();
}
onCreate内的Application 类
DaggerAppComponent.builder()
.application(this)
.build()
.inject(this);
对于此示例,MainActivityModule 为空:
@Module
public class MainActivityModule {
}
我正在使用支持库版本26.1.0
和匕首2.16
implementation "com.google.dagger:dagger-android:$rootProject.daggerVersion"
implementation "com.google.dagger:dagger-android-support:$rootProject.daggerVersion"
annotationProcessor "com.google.dagger:dagger-compiler:$rootProject.daggerVersion"
annotationProcessor "com.google.dagger:dagger-android-processor:$rootProject.daggerVersion"
只要删除ContributesAndroidInjector
行,项目就可以正常构建,否则我得到Cannot find symbol class DaggerAppComponent
。任何人都知道什么地方可能出问题了吗?