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,后续用到的时 ...
随机推荐
- delphi调用oracle存储过程(ODAC)
CREATE OR REPLACE PACKAGE p_lee01ISTYPE cur_lee01 IS REF CURSOR;END; CREATE OR REPLACE PROCEDURE pro ...
- Kernel与用户进程通信
测试IPv6 ready logo rfc 3315的时候,遇到一个问题,要求在收到ICMPv6 RA的时候,DHCPv6 Client要发Solicit消息.在平常的应用中,都是启动DHCPv ...
- The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory的解决方法
An error occurred at line: [31] in the generated java file: [/data/tmisnt/work/Catalina/localhost/_/ ...
- HttpClient-02连接管理
2.1.持久连接 两个主机建立连接的过程是很复杂的一个过程,涉及到多个数据包的交换,并且也很耗时间.Http连接需要的三次握手开销很大,这一开销对于比较小的http消息来说更大.但是如果我们直接使用已 ...
- 【USACO 2017Feb】 Why Did the Cow Cross the Road
[题目链接] 点击打开链接 [算法] dist[i][j][k]表示当前走到(i,j),走的步数除以3的余数为k的最小花费 spfa即可 [代码] #include<bits/stdc++.h& ...
- CodeFirst建模:DataAnotation
示例一 新建一个控制台应用程序,并安装entityframework 新建一个文件Blog.cs类,输入以下代码: using System.ComponentModel.DataAnnotation ...
- python cmd 启动python项目报错:no module named “xxx”
场景:使用pycharm编辑器启动pyhon项目时可以启动,但使用cmd启动时,会报:no module named “xxx”的错误,此时,有两种情况: 1.no module named “xxx ...
- [POI2012]FES-Festival
https://www.zybuluo.com/ysner/note/1252538 题面 有一个数列\(\{a\}\).现给定多组限制,限制分成\(2\)类,第一类是\(a_x+1=a_y\),有\ ...
- 洛谷 P2296 寻找道路 —— bfs
题目:https://www.luogu.org/problemnew/show/P2296 第一次用 Emacs 对拍,写了半天: 注意那个 is 赋值的地方很容易错,千万别反复赋值: 一道水题写了 ...
- 25.EXTJS 主页面的jsp
1. /** * @author sux * @time 2011-1-11 * @desc main page */ var mainPage = Ext.extend(Ext.Viewport,{ ...