Android Dagger未为AppComponent生成DaggerAppComponent类
我的“BaseServiceModule”是: 我的服务模块是:Android Dagger未为AppComponent生成DaggerAppComponent类,android,android-studio,dependency-injection,dagger-2,dagger,Android,Android Studio,Dependency Injection,Dagger 2,Dagger,我的“BaseServiceModule”是: 我的服务模块是: @Module public class BaseServiceModule { private static final int TIMEOUT = 40; private static final int READ_TIMEOUT = 40; private static final int WRITE_TIMEOUT = 40; private String url = ServerData.getInstance().
@Module
public class BaseServiceModule {
private static final int TIMEOUT = 40;
private static final int READ_TIMEOUT = 40;
private static final int WRITE_TIMEOUT = 40;
private String url = ServerData.getInstance().getServerUrl();
@Provides
String provideURL(){
return url;
}
@Provides
Gson provideGson(){
return new GsonBuilder().setLenient().create();
}
// Get BASE URL.
@Provides
public Retrofit.Builder provideRetrofitBuilder(OkHttpClient okHttpClient) {
return new Retrofit.Builder().baseUrl(ServerData.getInstance().getServerUrl()).client(okHttpClient);
}
// for custom URL, GSON
@Provides
public Retrofit getCustomUrlInstance_Gson(Retrofit.Builder retrofitBuilder) {
return retrofitBuilder.build();
}
@Provides
public Retrofit.Builder getBuilderGson(Retrofit.Builder builder, GsonConverterFactory gsonConverterFactory) {
return builder.addConverterFactory(gsonConverterFactory);
}
// GSON Converter Factory
@Provides
public GsonConverterFactory provideGsonConverterFactory( Gson gson){
return GsonConverterFactory.create(gson);
}
@Provides
public OkHttpClient provideOkHttpClient() {
return new OkHttpClient.Builder()
.connectTimeout(TIMEOUT, TimeUnit.SECONDS)
.writeTimeout(WRITE_TIMEOUT, TimeUnit.SECONDS)
.readTimeout(READ_TIMEOUT, TimeUnit.SECONDS)
.build();
}
}
@Module
public class ServiceModule {
@Provides
GlobalApiInterface provideGlobalApiInterfaceGson(Retrofit retrofit){
return retrofit.create(GlobalApiInterface.class);
}
}
我的活动组件是:
@Component(dependencies = AppComponent.class, modules = ServiceModule.class)
public interface ActivityComponent {
void inject(SchoolCodeActivity schoolCodeActivity);
}
@Component(modules = BaseServiceModule.class)
public interface AppComponent {
Retrofit getRetrofitInstance();
Retrofit.Builder getRetrofitBuilder();
}
我的AppComponent是:
@Component(dependencies = AppComponent.class, modules = ServiceModule.class)
public interface ActivityComponent {
void inject(SchoolCodeActivity schoolCodeActivity);
}
@Component(modules = BaseServiceModule.class)
public interface AppComponent {
Retrofit getRetrofitInstance();
Retrofit.Builder getRetrofitBuilder();
}
我的申请类别是:
public class MainApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
AppComponent component = // not making "DaggerAppComponent" final class
}
}
匕首版本使用:
annotationProcessor "com.google.dagger:dagger-compiler:2.24"
implementation 'com.google.dagger:dagger-android-support:2.16'
annotationProcessor 'com.google.dagger:dagger-android-processor:2.16'
我检查了其他重复的问题以寻求解决方案,但找不到相关的解决方案。
我是Dagger的新手,我正在尝试在应用程序级别上进行改造,并在活动级别上进行与改造相关的接口。”GlobalApiInterface'是用于改装的接口,“ServiceModule”是用于在改装中设置接口的模块
请帮助我解决我犯下的错误。在实施dagger后,您需要构建并运行该项目至少一次。它将自动生成DaggerAppComponent类 请尝试使用此依赖项:
implementation 'com.google.dagger:dagger:2.25.3'
annotationProcessor 'com.google.dagger:dagger-compiler:2.25.3'
梯度同步成功后,使缓存无效并重新启动。然后运行您的项目。在
构建
窗口中是否有任何错误消息?@BartekLipinski-不,事实上我能够创建“DaggerActivityComponent”。不,不工作。有没有可能dagger不能为那些不在任何地方使用的组件创建类?我认为您也应该使用范围界定。这可能会解决您的问题。@MrCode-您的两个答案都是正确的。主要是,我缺少范围界定,这就是DaggerAppComponent没有生成的原因。