RxJava2替换RxJava1遇到的问题记录

【转载请注明出处:李诗雨】

不诗意的女程序猿不是好厨师~

最初是在同学的指导下开始使用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的类里,重新导包即可。




积累点滴,做更好的自己~





猜你喜欢

转载自blog.csdn.net/cjm2484836553/article/details/77972632