web-dev-qa-db-ja.com

RxJavaCallAdapterFactoryをFactoryに変換できません

このガイドに従ってRetrofit2とRxJavaを使用しようとしています https://inthecheesefactory.com/blog/retrofit-2.0/en

「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

どうすれば修正できますか?ありがとう

14
Luisa Repele

メインのRetrofit依存関係、Gsonコンバーター依存関係、およびRxJavaアダプター依存関係に同じgroupIdとバージョンを使用していることを確認してください。

私はあなたがこのように見えると思います:

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'

(異なるgroupIdとバージョン番号を使用することに注意してください)

それらはすべて次のように同じように見えるはずです:

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'
44
Jake Wharton

現在「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-adapter:1.0.0」を追加すると、パッケージ化が成功します

2
Amit Maskery

後付けのrxjavaアダプターを

  implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofit_version"

そして、CallAdapterFactoryをに変更します

.addCallAdapterFactory(RxJava2CallAdapterFactory.create())

このようになります

.baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();
1
Eldhopj