一.v4包与V7包的介绍
1.android-support-v4 是谷歌推出的兼容包,最低兼容Android1.6的系统,里面有相似ViewPager等控件。ViewPager在Android 1.6如下的版本是不自带的,因此要实现ViewPager须要使用v4包中的ViewPager。还有v4 的fragment。android
2.android-support-v7是谷歌推出的版本兼容包,最低兼容Android2.1的系统,这个包一般和appcompat-v7这个工程一块儿使用。
appcompat-v7这个工程可让开发者统一开发,在任何系统版本下保证兼容性。涉及的内容有Theme,value,布局,新的控件,新的动画实现方式,api
特别注意:
包含了support-v4的所有内容,开发Android工程时,要兼容低版本都要导入v7工程。app
android studio在建立工程的时候默认导入了v7工程,而且将style使用了兼容style,给开发者提供了极大的方便。而且最新的v7包增长了不少material design的兼容类和素材,请及时更新。ide
3.android-support-v13是谷歌推出的版本兼容包,最低兼容Android3.2的系统。当初是为了开发平板作设计的。(价值不大)布局
v7版本适用于任何版本的开发,保证了兼容性,因此在使用的时候必定要采用。gradle
compile ‘com.android.support:appcompat-v7:27.0.2’
testCompile ‘junit:junit:4.12’动画
二.v4包与v7包的冲突解决
1.在实际项目中常见此类错误:
Error:Execution failed for task ‘:app:transformClassesWithDexForDebug’.
com.Android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException:ui
Jar包冲突,而后看了一下,项目库中的libs下,依赖了一个v4的jar包,而主工程中又依赖了一个v7的库而致使的冲突
(有时候,就是引入的第三依赖里,引入的v4与你引入的冲突,或者v7,
还有时候,你引入的工程依赖,里,也有v4,注意你要将他们保持版本同样)设计
解决方式一:
因为项目中的v4 jar通常比较旧,因此果断将v4包从libs目录下删除,从新添加在线的依赖库v4包,在build.gradle中添加依赖:orm
compile ‘com.android.support:support-v4:27.0.2’
注意此时的v4包的版本号要和主工程module的v7包的版本要一致,(通常状况下相同版本的依赖包不会冲突),而后从新build工程就ok了
解决方式二:(也使用第三方其余依赖重复引用v4)
不用删除项目库中的V4包,直接在主工程Module的build.gradle文件中添加以下:
compile(‘com.android.support:appcompat-v7:27.0.2’) {
exclude module: ‘support-v4’
}
//compile ‘com.android.support:support-v4:27.0.2’
compile ‘com.android.support:appcompat-v7:27.0.2’
apt ‘com.zhy:mpermission-compiler:1.0.0’//鸿神 权限管理
//鸿神 权限管理 v4冲突了
compile(‘com.zhy:mpermission-api:1.0.0’) {
exclude module: ‘support-v4’
}
默认状况下v7中是包含V4包的,exclude 的意思就是从v7包中去除v4包这样就能够解决冲突了…
项目中,最好,用依赖,不用jar包;