天天看点

Android Support v4,v7,v13的区别以及 v4,v7包冲突问题

本文章为转载文章 原文地址

一.v4包与V7及V13包的区别

1.android-support-v4 是谷歌推出的兼容包,最低兼容Android1.6的系统,里面有类似ViewPager等控件。ViewPager在Android 1.6以下的版本是不自带的,所以要实现ViewPager需要使用v4包中的ViewPager。其余控件类似。

2.android-support-v7是谷歌推出的版本兼容包,最低兼容Android2.1的系统,这个包通常和appcompat-v7这个工程一起使用。

appcompat-v7这个工程可以让开发者统一开发,在任何系统版本下保证兼容性。涉及的内容有Theme,value,布局,新的控件,新的动画实现方式,包含了support-v4的全部内容,开发Android工程时,要兼容低版本都要导入v7工程。android studio在创建工程的时候默认导入了v7工程,并且将style使用了兼容style,给开发者提供了极大的方便。并且最新的v7包增加了很多material design的兼容类和素材,请及时更新。

3.android-support-v13是谷歌推出的版本兼容包,最低兼容Android3.2的系统。当初是为了开发平板做设计的。Android 3.x系统都是平板专用系统,但是3.x系统失败了。所以使用v13的包没有任何价值。

v7版本适用于任何版本的开发,保证了兼容性,所以在使用的时候一定要采用。

二.v4包与v7包的冲突解决

在实际项目中常见此类错误:

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

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

解决方式一:

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

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

解决方式二:

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

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

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

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