引入第三方包V4冲突解决方法


TIPS:楼主作为一个android初学者,对于安卓一些开源的控件都不太熟悉,在百度的过程中,发现一个网站maven center repository可以查询各种你需要的jar包,很实用。


博主在上篇Fragment实现类似头条新闻显示效果(Fragment内嵌套Fragment)中实现了类似头条新闻的界面切换,但是资讯界面是利用fragment+radiogroup实现的页面切换,只能通过点击radiobutton切换页面,不符合用户使用习惯,也不符合现在主流app的形式。为了使得界面可以实现左右滑动切换,我改用了viewpager+viewpagerindicator+fragment的实现形式。其中楼主踩了不少坑,这里主要解决这些坑。
具体的实现样例和代码,可以看看陈利健开源控件ViewPagerIndicator的使用的文章,介绍的很详细。
博主遇到的最大的坑就是引入viewpagerindicator的包时,系统编译会报错,显示v4包已存在(第三方包引用了v4包,和本地依赖包冲突),在陈利健的文章里也说明了一种解决方式,但这种解决方式只适合通过Library手动加载依赖包的方式,你可以通过手动在文件里查找到v4包并删除它。但这种解决方法显然不适合我们通过implementation来引入依赖包,因为你没法在本地libs中找到v4包并删除它。
博主最终在stackoverflow上找到解决方法,即在gradle的依赖中加入configurations.all {exclude group: 'com.android.support', module: 'support-v4'},关于这么做的具体原因,可以参考Controlling specific dependencies,这里详细介绍了关于gradle的知识,很有学习价值。
这里贴一下博主的dependencise声明

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    //v7包中已经引用了v4包,因此这个依赖会和下面的viewpagerindicator产生v4冲突
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'

    //.....其他依赖

    //ViewPagerIndicator中引用了v4冲突,和上面的com.android.support:appcompat-v7:28.0.0会产生冲突
    implementation 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'

    //通过加入这段代码,可以解决冲突 
    configurations.all {exclude group: 'com.android.support', module: 'support-v4'}

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

你可能感兴趣的:(引入第三方包V4冲突解决方法)