2016-06-09 5 views
12

Я пытаюсь использовать Дооснащение 2 и RxJava после руководства в этом https://inthecheesefactory.com/blog/retrofit-2.0/enRxJavaCallAdapterFactory не могут быть преобразованы в фабрики

В разделе «RxJava Интеграция с CallAdapter » объясняет, как использовать RxJava с модифицированной

Retrofit retrofit = new Retrofit.Builder() 
    .baseUrl("http://api.nuuneoi.com/base/") 
    .addConverterFactory(GsonConverterFactory.create()) 
    .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) 
    .build(); 

Однако во время компиляции есть следующее сообщение об ошибке:

Error:(63, 71) error: incompatible types: RxJavaCallAdapterFactory cannot be converted to Factory 

Как может Я чиню это?

+0

Вы включили зависимости упомянутых? compile 'com.squareup.retrofit: adapter-rxjava: 2.0.0-beta2' compile 'io.reactivex: rxandroid: 1.0.1' –

+0

да, я включаю зависимости compile 'com.squareup.retrofit: adapter-rxjava: 2.0.0-beta2 ' compile' io.reactivex: rxandroid: 1.0.1 ' –

+0

@LuisaRepele Странно, но я включил все необходимые зависимости, и Android Studio все еще не могла найти «RxJavaCallAdapterFactory». Затем я вручную добавляю 'import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory'', и он сработал. – tchelidze

ответ

40

Убедитесь, что вы используете ту же самую группу и версию для основной зависимости от изменения, зависимости от преобразователя Gson и зависимости от адаптера RxJava.

Я предполагаю, что ваши выглядеть примерно так:

compile 'com.squareup.retrofit2:retrofit:2.0.2' 
compile 'com.squareup.retrofit2:converter-gson:2.0.2' 
compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2' 

(Обратите внимание, что они используют различные groupIds и номера версий)

Все они должны выглядеть так же, как это:

compile 'com.squareup.retrofit2:retrofit:2.0.2' 
compile 'com.squareup.retrofit2:converter-gson:2.0.2' 
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2' 
+0

Благодарим за внимание в коде версии, поскольку я использовал 2.3.0, но затем реализованный конвертер-gson был 2.1.0, поэтому я получил ошибку, которая не может решить RxJavaCallAdapterFactory. Однако, если бы я посмотрел в файле gradle, то был весь набор библиотек. –

2

В настоящее время добавлено: «com.squareup.retrofit: adapter-rxjava: 2.0.0» дает следующую ошибку:

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. > com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/rxjava.properties 

Но, вместо этого, добавляя «компилировать«com.jakewharton.retrofit: retrofit2-rxjava2-адаптер: 1.0.0" , делает упаковки успешно

+1

Это по-прежнему актуально с 9 марта 2017 года. Я использую retrofit 2.2.0, rxjava2-адаптер jakewharton 1.0.0, rxandroid 2.0.1 и rxjava 2.0.7. – Chris

+2

На самом деле вам следует импортировать 'compile 'com.squareup.retrofit2: adapter-rxjava2: 2.2.0'', а затем использовать' .addCallAdapterFactory (RxJava2CallAdapterFactory.create()) ' – Rumid

Смежные вопросы