报错信息:找不到符号类DaggerAppComponent
Application类:
public class App extends MultiDexApplication implements HasActivityInjector {
@Inject
DispatchingAndroidInjector<Activity> dispatchingAndroidInjector;
@Override
public void onCreate() {
super.onCreate();
Realm.init(this);
DaggerAppComponent
.builder()
.application(this)
.build()
.inject(this);
}
@Override
public AndroidInjector<Activity> activityInjector() {
return dispatchingAndroidInjector;
}
}
应用组件:
@Singleton
@Component(modules = {
AndroidSupportInjectionModule.class,
ToolsModule.class,
RepositoriesModule.class,
BuildersModule.class })
public interface AppComponent {
@Component.Builder
interface Builder {
@BindsInstance
Builder application(App app);
AppComponent build();
}
void inject(App app);
}
使用的依赖项:
implementation 'com.google.dagger:dagger:2.11'
annotationProcessor 'com.google.dagger:dagger-compiler:2.11'
解决方案:
从报错信息看,是dagger2 使用无法自动生成dagger + component。 检查了代码和依赖项都没问题,于是让同事在他电脑上run了一下工程,发现同事可以跑起来。。。。原来是环境的原因。我的AS是最新版本2021.1.1 默认指定的JDK是11。将AS默认JDK改为JKD8就可以了:File→Project Structure(Mac电脑可以使用?; 快捷键)→ Gradle Settings →Gradle JKD选择1.8。
|