【转载请注明出处:李诗雨】
不诗意的女程序猿不是好厨师~
最初是在同学的指导下开始使用RxJava的,那时使用的还是RxJava1,现在发现RxJava2相对于RxJava1更好用,于是便换成了RxJava2。期间遇到了一些问题,在这里做个记录。
恩,天真无鞋的我以为只要在gradle文件中改下配置,就完成了RxJava1到RxJava的升级了,可是事实并不是这个样子的。
// compile 'io.reactivex:rxandroid:1.2.1'
// compile 'io.reactivex:rxjava:1.1.6'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.0.7'
下面就是出现的一些问题和解决方法 -_-
【问题1】
Error:Execution failed for task ':LSYTestPro:transformResourcesWithMergeJavaResFor360Debug'.
com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/rxjava.properties
File1: C:\Users\1.gradle\caches\modules-2\files-2.1\io.reactivex\rxjava\1.3.0\af000bec2036a2a9d07197c4b03b8966bfc60b03\rxjava-1.3.0.jar File2: C:\Users\1.gradle\caches\modules-2\files-2.1\io.reactivex.rxjava2\rxjava\2.0.7\21734c0092a5d3c3ec99510e50c1ff76bdf0c65a\rxjava-2.0.7.jar
【解决方法】
在build.gradle文件中增加如下代码:apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
android {
compileSdkVersion 26
buildToolsVersion "26.0.0"
//添加这段代码
packagingOptions {
exclude 'META-INF/rxjava.properties'
// … and any other excludes go here
}
defaultConfig {
....
}
...
}
【问题2】
这是因为adapter-rxjava不支持Rxjava 2.x
令我感到高兴的是,从github上发现已经有adapter-rxjava2了。
【解决方法】
①修改build.gradle文件
②对使用的地方做修改
包名要改(重新导包)
修改使用的类名
【问题3】
原先使用的RxPermissions报错
原因也是之前的RxPermissions不支持RxJava2.
又令我高兴的是从github上,发现RxPermissions现在已经有支持RxJava2的版本了 ^_^
【解决方法】
Build.gradle文件做修改
使用的RxPermissions的类里,重新导包即可。
积累点滴,做更好的自己~