在安卓上如何优雅地解决v4,v7包冲突问题(最佳实践篇)

问题描述:

需求:要做个应用其中要集成环信EaseUI,将库依赖到Module时报如下错误:

Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
  com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException:

翻译过来就是Jar包冲突,然后看了一下,EaseUI库中的libs下,依赖了一个v4的jar包,而主工程中又依赖了一个v7的库而导致的冲突

 

解决方式一:

由于EaseUI中的v4 jar一般比较旧,所以果断将v4包从libs目录下删除,重新添加在线的依赖库v4包,在build.gradle中添加依赖:

compile 'com.android.support:support-v4:24.2.0'

注意此时的v4包的版本号要和你主工程module的v7包的版本要一致,(一般情况下相同版本的依赖包不会冲突),然后重新build工程就ok了

 

 

解决方式二:

不用删除EaseUI库中的V4包,直接在主工程Module的build.gradle文件中添加如下:

        compile('com.android.support:appcompat-v7:23.3.0') {
            exclude module: 'support-v4'
        }

默认情况下v7中是包含V4包的,exclude  的意思就是从v7包中去除v4包这样就可以解决冲突了...

 

最后我要说的是如果项目中要使用v4包的时候尽量使用在线依赖库,不要使用jar包这样也可以减少冲突的发生...

 

这是我的一些经验分享,由于本人的水平有限,如果有不对的地方,欢迎大家批评指正!0.0

你可能感兴趣的:(Android)