引入RxJava2,运行时报: Duplicated file rxjava.properties错误

来源:互联网 发布:如何管理网络客服 编辑:程序博客网 时间:2024/05/22 00:44

情景

最近看到有关于Rxjava2的文章:给初学者的RxJava2.0教程(一)
然后就想照着上面的例子自己敲一下,因为之前demo里引入的是Rxjava1,然后现在换成Rxjava2,栗子写好后,编译正常,等运行时发现报下面这个错:

这里写图片描述
显示重复添加了rxjava

问题原因

目前没弄明白是怎么回事,尝试去目录下吧1.5的jar包删除,还是报这个错误。

解决方案

具体看这里,在github上有人问了这个问题2.x: Duplicated file rxjava.properties
即在app/build.gradle下加上下面几句:
这里写图片描述

PS

推荐一个小插件:无线调试 ADB WIFI

/———–更新(2017/06/26)————-/

刚刚貌似找出了问题所在,因为照着上面的例子敲的时候,我发现我导入Observable对象时会有两个包,如下图:

这里写图片描述

导入rx包时,创建Observable对象的代码是这样的:

//创建observable        Observable.create(new Observable.OnSubscribe<Integer>() {            @Override            public void call(Subscriber<? super Integer> subscriber) {            }        });

而导入io.reactivex包时,创建Observable代码为:

Observable.create(new ObservableOnSubscribe<Integer>() {            @Override            public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {                          }        });

原来,上面一个是RxJava1的特性,下面的一个是Rxjava2的特性,也就很确定是我的demo里确实同时引用了两个版本,那么到底是在哪引用的呢,仔细检查了下app/build.gradle,发现了元凶:

这里写图片描述

在引入retrofit的adapter的时候引入的是rxjava,也就是rxjava1。
然后把这个改成下面的那个compile ‘com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0’就好了。
为了验证,去掉之前加入的

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

再次运行,发现不会报这个错误了。ok,问题解决。

ps:再推荐一个studio的快捷键:自动处理import:

这里写图片描述

阅读全文
0 0
原创粉丝点击