このガイドに従って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
どうすれば修正できますか?ありがとう
メインの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'
現在「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」を追加すると、パッケージ化が成功します
後付けのrxjavaアダプターを
implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofit_version"
そして、CallAdapterFactoryをに変更します
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
このようになります
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();