Я получаю исключение при сборке с версии dagger2 2.16 до версии 2.23.2.Это работает и работает в 2.16.Я не модифицировал ни один код.После обновления до 2.23.2 его не удалось собрать.Я не уверен, в чем проблема, поэтому я прошу всех о помощи.Спасибо.
Модуль
@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);
}
@Module
interface ActivityModule {
@ActivityScope
@ContributesAndroidInjector
MainActivity main();
@Module
public interface ViewModelModule {
@Binds
@IntoMap
@ViewModelKey(VMMain.class)
ViewModel main(VMMain vm);
Компонент
@Singleton
@Component(modules = {BaseModule.class, AndroidSupportInjectionModule.class})
public interface BaseComponent {
Application provideApplication();
SharedPreferencesPlus provideSharedPreferencesPlus();
Gson provideGson();
OkHttpClient provideOkHttpClient();
Retrofit provideRetrofit();
@Component.Builder
interface Builder {
@BindsInstance
Builder application(Application application);
Builder AppModule(BaseModule baseModule);
BaseComponent build();
}
@ApplicationScope
@Component(modules = {
ActivityModule.class,
ViewModelModule.class,
DataModule.class}, dependencies = BaseComponent.class)
public interface AppComponent
{
void inject(AppContext application);
}
исключение: [Dagger / MissingBinding] java.util.Map>> не может быть предоставлен без аннотированного @ Provides метода.
java.util.Map >> внедряется в dagger.android.DispatchingAndroidInjector (…, injectorFactoriesWithStringKeys)
dagger.android.DispatchingAndroidInjectorдобавляется в 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)