Rxjava1升级Rxjava2踩坑一记
Rxjava1升级Rxjava2坑
共存问题
通常情况下,如果我们希望在一个模块中既想使用rxjava1又想使用rxjava2,这个时候在运行的时候会出现一下报错:
... APK META/-INF/rxjava.properies
解决办法:要么都用rxjava1要么都用rxjava2
出现此报错的原因大概就是找到某个类的两个文件入口,因此无法判断使用哪个方法.
依赖问题
如果有依赖rxjava1,那么升级时在运行时也会出现上述所说的问题:
a、第三方模块
b、手动导jar包
c、通过compile方式的库
... APK META/-INF/rxjava.properies
解决办法:
1、通用的办法(这种方法基本可以适用于所有的依赖问题,这种方式是在打包的时候排除这些问题件):
packagingOptions{
exclude 'META-INF/rxjava.properties'
}
2、解决通过compile方式依赖的问题:
找出compile方式的库中存在依赖rxjava库(同时也适用于第三方模块中的compile情况),然后在最后面加上@aa
例如:
compile 'com.darsh.multipleimageselect:multipleimageselect:1.0.4@aar'
其中最大的坑就是Bmob的引用问题(希望Bmob能尽快解决):
由于本人是使用导jar包的方式引入Bmob的,因此我就对这种方式的依赖问题说下自己的观点。
Bmob的SDK代码中由于依赖了rxjava1,而rxjava2与rxjava1中的包名于类名有了不小的改变,除非你自己去改了SDK的代码,否则的话就只能用第一种方式来解除依赖问题。
还有一点就是在Bmob中也依赖了许多库比如说Annotation,gson,如果我们在编译运行时候也发现类似上述问题的话,我的解决方式是通过压缩文件打开bmob的jar包,然后删除对应的库的文件夹就好了。
自己对第三方库和第三方服务的一些看法
这里我想说的一点就是,希望以后第三方库在升级的时候能兼容下低版本的。
还有第三方服务最好不要于某种库太过于耦合
rxjava2与rxjava1的一些变化
下面我给出rxjava2的学习博客[给初学者的Rxjava2.0教程][1]
Action -> Consumer
Action0 改成了 Action
Action1 改成了 Consumer
Action2 改成了 BiConsumer
可能是因为3-9没什么人用的缘故,官方把Action3-Action9给删除了
Func -> Function
Func 改成 Function
Func2 改称了 BiFuncation
Func[3 - 9] 改成了 Function[3 - 9]
Observable.OnSubscribe -> ObservableOnSubscribe
Observable.OnSubscribe 改成了 ObservableOnSubscribe
Observable.Transformer -> ObservableTransformer
Observable.Transformer 改成了 ObservableTransformer
Subscription -> Disposable
Subscription 改成了 Disposable
发现一个lambda的优点
由于rxjava1 到 rxjava2的一些类名和类的方法名发生了变化。因此在使用new方式来设置对象的时候,通过要把类名和方法名字一起改了,如果使用的是lambda表达式,那么基本不用改代码,说多无畏,上代码:
分析以上代码我们会发现,除了类名于方法名不同之外,其他都是一个样
下面是llambda表达式代码:
看到了么,我们在升级的时解决类名问题,如果两个版本的类名没有改,则直接可以通过去除rxjava1的包,导入rxjava2的包就可以搞定了,是不是神操作
Rxjava1升级Rxjava2踩坑一记的更多相关文章
- python3.6和pip3:Ubuntu下安装升级与踩坑之路
本文以Ubuntu16.x系统为例,演示如何安装python3.6和相应环境.安装Python3的机器必须要能访问外网才能进行如下操作! 1. 安装方式 在Ubuntu下安装python有两种方式: ...
- jQuery升级踩坑大全
jQuery升级踩坑大全 背景 jQuery想必各个web工程师都再熟悉不过了,不过现如今很多网站还采用了很古老的jQuery版本.其实如果早期版本使用不当,可能会有DOMXSS漏洞,非常建议升级到j ...
- Spark 1.6升级2.x防踩坑指南
原创文章,谢绝转载 Spark 2.x自2.0.0发布到目前的2.2.0已经有一年多的时间了,2.x宣称有诸多的性能改进,相信不少使用Spark的同学还停留在1.6.x或者更低的版本上,没有升级到2. ...
- SpringBoot1.x升级SpringBoot2.x踩坑之文件上传大小限制
SpringBoot1.x升级SpringBoot2.x踩坑之文件上传大小限制 前言 LZ最近升级SpringBoo框架到2.1.6,踩了一些坑,这里介绍的是文件上传大小限制. 升级前 #文件上传配置 ...
- .NET Core 从1.1升级到2.0记录(Cookie中间件踩坑)
.NET Core 2.0 新时代 万众瞩目的.NET Core 2.0终于发布了,原定于9.19的dotnetconf大会的发布时间大大提前了1个月,.NET Core 2.0/.NET Stand ...
- jQuery升级踩坑之路
1.使用了被废弃的jQuery.browser属性 jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support . 在更 ...
- jQuery版本升级踩坑大全
背景 -------------------------------------------------------------------------------- jQuery想必各个web工程师 ...
- 【踩坑记】从HybridApp到ReactNative
前言 随着移动互联网的兴起,Webapp开始大行其道.大概在15年下半年的时候我接触到了HybridApp.因为当时还没毕业嘛,所以并不清楚自己未来的方向,所以就投入了HybridApp的怀抱. Hy ...
- NET Core2.0 Memcached踩坑,基于EnyimMemcachedCore整理MemcachedHelper帮助类。
DotNetCore2.0下使用memcached缓存. Memcached目前微软暂未支持,暂只支持Redis,由于项目历史原因,先用博客园开源项目EnyimMemcachedCore,后续用到的时 ...
随机推荐
- Linux NFS服务器的安装与配置(转载)
一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操 ...
- javascript statically scope
在javascript 里面, 函数中使用的未定义的变量,会默认变为全局的变量. 而通过 var 这个关键字定义的变量,就是局部变量. As far as the output is concerne ...
- Android Toast小解
简单介绍:Toast英文含义是吐司,在Android中.它就像烘烤机里做好的吐司弹出来,并持续一小段时间后慢慢消失. Toast也是一个容器,能够包括各种View,并承载着它们显示. Android中 ...
- io口的作用
I/O接口的作用 主机与外界交换信息称为输入/输出(I/O).主机与外界的信息交换是通过输入/输出设备进行的.一般的输入/输出设备都是机械的或机电相结合的产物,比方常规的外设有键盘.显示器.打 ...
- 深度理解apache 重写模块rewrite_mod,重写不再犯错
1.RewriteRule ^(com\/.*)$ index.php?do=$1 问:上面的规则匹配表达式 "^(.*)$" 匹配的内容是什么 答:匹配内容是URI站点目录:/d ...
- ios28--UIScrollView
// // ViewController.m // UIScrollVIew #import "ViewController.h" @interface ViewControlle ...
- backbone源代码注释(部分)
// Backbone.js 1.0.0 // (c) 2010-2013 Jeremy Ashkenas, DocumentCloud Inc. // Backbone may be freely ...
- POJ2653 Pick-up sticks 判断线段相交
POJ2653 判断线段相交的方法 先判断直线是否相交 再判断点是否在线段上 复杂度是常数的 题目保证最后答案小于1000 故从后往前尝试用后面的线段 "压"前面的线段 排除不可能 ...
- linux下的C语言开发 进程创建 延伸的几个例子
在Linux下面,创建进程是一件十分有意思的事情.我们都知道,进程是操作系统下面享有资源的基本单位.那么,在linux下面应该怎么创建进程呢?其实非常简单,一个fork函数就可以搞定了.但是,我们需要 ...
- 杂项-Java:Ehcache
ylbtech-杂项-Java:Ehcache EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. 1.返回顶部 1. 基 ...