RxJava2+Retrofit2+OkHttp3遇到的问题

这篇博客记录了在集成RxJava2、Retrofit2和OkHttp3过程中遇到的挑战。问题包括资源冲突、找不到CallAdapter以及RxJava版本切换导致的代码错误。解决方案包括在build.gradle中添加特定配置以解决资源冲突,以及理解不同RxJava版本的适配器需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚开始玩这个。遇到的问题记录下做个笔记。

问题1.transformResourcesWithMergeJavaResForDebug

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
File1: C:\Users\sunny\.gradle\wrapper\dists\gradle-3.3\caches\modules-2\files-2.1\io.reactivex\rxjava\1.1.5\ece7b5d0870e66d8226dab6dcf47a2b12afff061\rxjava-1.1.5.jar
File2: C:\Users\sunny\.gradle\wrapper\dists\gradle-3.3\caches\modules-2\files-2.1\io.reactivex.rxjava2\rxjava\2.0.1\57f850a6b317e5582f1dbaff10a9e7d7e1fcdcfb\rxjava-2.0.1.jar

问题描述;之前使用RxJava1.1.5后来想用下RxJava2,直接就把低版本的给注释掉。

相同的Jar包里边的配置文件冲突了,AS内部bug

解决方式:在build.gradle(app)中Android中加入

Android{
    ...
    packagingOptions {
        exclude 'META-INF/rxjava.properties'
    }
    ...
}

问题2:Could not locate call adapter for io.reactivex.Observable<com.example.sunny.fristproject.bean.PickingDetailsBean>

从RxJava1切换到Rxjava2出现的问题;

//compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'//retrofit现在只支持到rxjava1.XX(之前使用)

compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'// 这个库可以支持到rxjava2.X(解决问题)

另外:两个依赖切换之后

addCallAdapterFactory(RxJavaCallAdapterFactory.create())
//中RxJavaCallAdapterFactory要切换成
RxJava2CallAdapterFactory

问题3:用RxJava1时书写:

 

//Rxjava1这样写是没问题的。
Observable detailObservable =  (Observable)iUserBiz.getDetailObservable()
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Subscriber<PickingDetailsBean>(){
            @Override
            public void onCompleted() {);
            }
            @Override
            public void onError(Throwable e) {}

            @Override
            public void onNext(PickingDetailsBean pickingDetailsBean) {}
        });
//

 但是换成Rxjava2时。代码就会出错。问题暂时我不知怎我不知道咋描述(有知道的告诉我下。),附张图:

 解决方式:

Observable detailObservable =  iUserBiz.getDetailObservable();
        detailObservable.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<PickingDetailsBean>() {

                    @Override
                    public void onSubscribe(Disposable d) {}
                    @Override
                    public void onNext(PickingDetailsBean value) {}

                    @Override
                    public void onError(Throwable e) { }

                    @Override
                    public void onComplete() {}
                });

 暂时这么多,还遇到一些其他问题但是没有及时记录,下面再有的话会一直更新。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值