解决Android Studio项目support包重复引入多个版本的错误

        “不重复造轮子”,这是可谓是写代码界的格言了,做Android开发也不例外,为了更快完成项目需求,我们在接到需求开始动手写代码前都会去GitHub或者码云等代码库搜索一下有没有大神已经实现好类似功能的“轮子”,有就可以轻轻松松compile进依赖包,拿来用了,随着使用的第三方包增加,加上个别造轮子的人没怎么注意包的引入问题,便会出现引入重复的包,这个问题轻则出现警告,重则无法运行App。本篇文章记录下我在开发过程遇到的一个警告型错误:

从提示信息可以看出这个错误是因为引入了多个版本的support包,此时虽然能运行App,但是本着严谨的作风,有错误就一定要想办法解决掉,不然日后坑深了就爬不出来了。

什么是support包

    首先介绍下什么是support包,我们都知道Android发展到现在已经发布了很多个版本了,而且每个版本都增加不少新的“功能”,这就导致了低版本系统使用高版本功能时会出错,为了解决这个问题,Google就做了这些个support包,即我们经常看到的support v4,v7,v13等等这些包。

support-v4

    用在API lever 4(即Android 1.6)或者更高版本之上。它包含了相对更多的内容,而且用的更为广泛,例如:Fragment,NotificationCompat,LoadBroadcastManager,ViewPager,PageTabStrip,Loader,FileProvider 等

* support-v7

   用在  API level 7(即Android 2.1)及以上版本而设计的,但是v7是要依赖v4这个包的,v7支持了Action Bar以及一些Theme的兼容。

* support-v13

     用在API level 13(即Android 3.2)及更高版本的,一般我们都不常用,平板开发中能用到。

我们常用的一般就v4和v7包。注意:gradle引用appcompat-v7包的时候就不需要引用v4了,因为v7里默认包含了v4包。

重复引入解决方法

1:在引入第三方依赖包的时候明确知道它会引入冲突包,可以在引入的时候去除引入其中的support包,这个方法在引入库较多的时候不实用,这里就不做介绍了。

2:直接配置全局support包的版本,统一使用同一个版本的support包:

在build.gradle 配置文件下android包下添加如下配置代码:

···

configurations.all {

resolutionStrategy.eachDependency { DependencyResolveDetails details ->

def requested = details.requested

if (requested.group =='com.android.support') {

if (!requested.name.startsWith("multidex")) {

details.useVersion'26.0.0' //这里改为你项目使用的版本即可

            }

        }

    }

}

···

你可能感兴趣的:(解决Android Studio项目support包重复引入多个版本的错误)