Android 如果没有@Providers注释方法,则无法提供Dagger/MissingBinding
我在从dagger2 2.16版本构建到2.23.2版本时遇到了一个例外。 它在2.16中启动并运行。我没有修改任何代码。升级到2.23.2后,无法生成。 我不确定问题出在哪里,所以我请大家帮忙。 多谢各位 模块Android 如果没有@Providers注释方法,则无法提供Dagger/MissingBinding,android,dagger-2,dagger,Android,Dagger 2,Dagger,我在从dagger2 2.16版本构建到2.23.2版本时遇到了一个例外。 它在2.16中启动并运行。我没有修改任何代码。升级到2.23.2后,无法生成。 我不确定问题出在哪里,所以我请大家帮忙。 多谢各位 模块 @Module public class BaseModule { private ConfigBuilder configBuilder; public BaseModule(@Nullable ConfigBuilder configBuilder) {
@Module
public class BaseModule {
private ConfigBuilder configBuilder;
public BaseModule(@Nullable ConfigBuilder configBuilder) {
this.configBuilder = configBuilder;
}
@Singleton
@Provides
public Gson provideGson() {
GsonBuilder builder = new GsonBuilder();
if (configBuilder != null) {
configBuilder.buildGson(builder);
}
return builder.create();
}
@Singleton
@Provides
public OkHttpClient provideOkHttpClient() {
OkHttpClient.Builder builder = new OkHttpClient.Builder();
if (configBuilder != null) {
configBuilder.buildOkHttp(builder);
}
builder.addInterceptor(new EncryptInterceptor());
if (BuildConfig.DEBUG) {
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
builder.addInterceptor(loggingInterceptor);
}
return builder.build();
}
@Singleton
@Provides
public Retrofit provideRetrofit(OkHttpClient okHttpClient, Gson gson) {
Retrofit.Builder builder = new Retrofit.Builder()
.client(okHttpClient);
if (configBuilder != null) {
configBuilder.buildRetrofit(builder);
}
builder.addConverterFactory(GsonWrapperConverterFactory.create(gson))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create());
return builder.build();
}
@Singleton
@Provides
public SharedPreferencesPlus provideSharedPreferencesPlus(Application application, Gson gson) {
return SharedPreferencesPlus.createDefault(application, gson);
}
@模块
接口活动模块{
@活动范围
@贡献Android注射器
main活动main();
组成部分
@Singleton
@组件(模块={BaseModule.class,AndroidSupportInjectionModule.class})
公共接口基组件{
应用程序提供应用程序();
SharedPreferencesPlus提供共享首选项SPlus();
Gson-provideGson();
OkHttpClient provideOkHttpClient();
改装ProviderRetrofit();
@组件生成器
界面生成器{
@装订
建造商申请书(申请书);
生成器AppModule(BaseModule BaseModule);
BaseComponent build();
}
例外情况:
[Dagger/MissingBinding]java.util.Map>>如果没有@Provides注释方法,则无法提供
java.util.Map>>在dagger.android.DispatchingAndroidInjector(…,injectorFactoriesWithStringKeys)处注入
dagger.android.DispatchingAndroid注射器在
org.pp.va.video.app.AppContext.serviceInjector
org.pp.va.video.app.AppContext被注入
org.pp.va.video.di.AppComponent.inject(org.pp.va.video.app.AppContext)
还请访问:
dagger.android.DispatchingAndroidInjector(…,injectorFactoriesWithStringKeys)我发现从2.16到2.17开始出现问题。 我观察到错误,因为在AppComponent中引入了AndroidSupportInjectModule。我曾经在BaseComponent中引入AndroidSupportInjectModule,然后是AppComponent依赖的BaseComponent。现在它无法工作。我从BaseComponent中删除了AndroidSupportInjectModule的引入,并引入了AndroidSupportInjectModuleAppComponent中的idSupportInjectionModule解决了我的问题 我目前的代码如下:
@ApplicationScope
@Component(modules = {
ActivityModule.class,
ViewModelModule.class,
DataModule.class, AndroidSupportInjectionModule.class}, dependencies = BaseComponent.class)
public interface AppComponent
我发现从2.16开始到2.17开始出现问题。 我观察到错误,因为在AppComponent中引入了AndroidSupportInjectModule。我曾经在BaseComponent中引入AndroidSupportInjectModule,然后是AppComponent依赖的BaseComponent。现在它无法工作。我从BaseComponent中删除了AndroidSupportInjectModule的引入,并引入了AndroidSupportInjectModuleAppComponent中的idSupportInjectionModule解决了我的问题 我目前的代码如下:
@ApplicationScope
@Component(modules = {
ActivityModule.class,
ViewModelModule.class,
DataModule.class, AndroidSupportInjectionModule.class}, dependencies = BaseComponent.class)
public interface AppComponent
@ApplicationScope
@Component(modules = {
ActivityModule.class,
ViewModelModule.class,
DataModule.class, AndroidSupportInjectionModule.class}, dependencies = BaseComponent.class)
public interface AppComponent
@Singleton
@Component(modules = {BaseModule.class})
public interface BaseComponent {