环信保书:EaseUI库中V4、v7包冲突解决方案

首先需要了解为什么要有support库?

  因为如果在低版本Android平台上开发一个应用程序,而应用程序又想使用高版本才拥有的功能,就需要使用Support库。一下是我们使用到v4或v7的一些常见的功能。

support-v4
  
   该系列包用在API Level 4(即Android 1.6)或者更高版本以上。它包含了相对于正常SDK中更多的内容。比如说:Fragment、NotificationCompat、LoadBroadcastManager、ViewPager、PageTabStrip、Loader、FileProvider等。

support-v7
 
   该系列包是为了考虑在API level 7(Android 2.1)及以上使用高版本效果而设计的,v7包含了v4的所有效果(v7中包含v4包的,即v7依赖于v4),v7当中支持了很多新的效果,最新的版本中还支持了Material Design的多种新的布局和空间。比如说:RecyclerView、TabLayout、ToolBar、CardView等等新的包。 
我们在开发过程中,v4或者v7是非常常见需要引用的,如果是使用到了easeui库,那问题就来了。
以下是使用环信easeui的v4包常见的冲突报错案例:
关于v4包的冲突常见的报错截图目前有以上三张,其他的凡是使用环信easeui库类似的v4的冲突的
这个问题很明显easeui中使用了v4,你自己的项目再去使用v4那就会出现这个问题了,或者是v7同样的也是一样会产生冲突。

#1.自己的项目中使用了v4跟easeui中的v4包产生冲突了

需要在自己的主工程Module的build.gradle文件的android节点下去配置(切记是android节点)
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
}

请注意:

   倘若配置之后问题没有解决那需要将自己的v4包版本以及easeui中的v4版本设置成一致的,(有些用户找不到easeui中的v4版本在哪里去更改,在easeui中的build.grild中去做更改,有的用户导入easeui是找到不到v4包的,是因为没有在导入easeui之前去删除easeui的build.grild,自然是找不到的,需要去删除easeui的build.grild 之后去依赖easeui库,自动生成的build.grild是可以看到v4包的版本的。)以下的2#3#情况皆是如此,后文不在详细赘述。

#2.自己的项目中有使用v7跟easeui的v4包产生冲突了

需要在自己的项目的build.gradle的android节点下去配置(切记是android节点)
configurations {
all*.exclude group:'com.android.support', module:'support-annotations'
}

配置之后去clean(build)项目之后去运行
当然配置之后不一定可以解决您的问题,那就去将v4 包和v7包更改用一个版本的(自己的项目的easeui都是要做处理的设置成一个版本的),这样问题就解决了。

#3.自己的项目中使用了v4和v7都有使用跟easeui的v4包产生冲突的

需要在自己的项目的build.gradle的android节点下去配置(切记是android节点)
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
all*.exclude group:'com.android.support', module:'support-annotations'
}

配置之后去clean(build)项目之后去运行
同样问题没有解决的,那就去将v4 包和v7包更改用一个版本的(自己的项目的easeui都是要做处理的设置成一个版本的),这样问题就解决了。
2.jpg 4.jpg 3.jpg 1.jpg

5 个评论

更改版本一致之后,完美解决
很受用!环信妹子棒棒哒!
为什么我改完了 还是不好使呢,
更改之后报错是什么呢?都做了哪些操作,之后报错是什么?
AGPBI: {"kind":"error","text":"Program type already present: org.apache.commons.codec.BinaryDecoder","sources":[{}],"tool":"D8"}
这是因为什么冲突了?没导入 easeUI 就没问题

要回复文章请先登录注册

知识价值的认可,源自您的赞赏

扫描二维码,你的支付将由imGeek代收后转给对方

×