美文网首页
引入第三方包V4冲突解决方法

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

作者: koinzhang | 来源:发表于2019-01-19 23:54 被阅读90次

    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冲突解决方法

          本文链接:https://www.haomeiwen.com/subject/nletjqtx.html