我正在使用构建风格在两个项目之间切换。我正在使用dagger2,并且一个项目运行正常,但是在切换另一个项目并尝试运行它时,显示以下错误:
java.lang.NoClassDefFoundError: dagger.internal.Preconditions
at common.di.DaggerAppComponent$Builder.appModule(DaggerAppComponent.java:35)
这是我的gradle依赖项:
// Dependency Injection
annotationProcessor 'com.google.dagger:dagger-compiler:2.14.1'
implementation 'com.google.dagger:dagger:2.14.1'
compileOnly 'javax.annotation:jsr250-api:1.0'
问题主要是在AppComponent中添加appModule时出现的。
private AppComponent createAppComponent() {
return DaggerAppComponent.builder()
.appModule(new AppModule(this)) //Problem is here
.networkModule(new NetworkModule())
.build();
}
答案 0 :(得分:2)
最后,我找到了根本原因。它基本上是API级别的问题。 对于低于21的Android API级别,您需要在构建gradle文件中添加以下依赖项。还将Application类更改为MultiDexApplication,如下所示:
在应用程序build.gradle文件中:
List<Column> = config.getColumns();
在BaseApplication中,将Application类更改为Implementation 'com.android.support:multidex:1.0.3'
:
MultiDexApplication