gradle导入依赖(解决gradle依赖库冲突)
本文目录
解决gradle依赖库冲突
在做开发的时候,我们经常会导入一些库,库里面又会依赖其他的一些库,这就会导致有时候库版本冲突了,导致编译不能过!昨天刚好群里有个哥们问了一个这个错误,怎么解决,这里记录一下!(You should manually set the same version via DependenyResolution)
在进行解决这个之前,我们先了解一下,依赖时候填写的那一段长长的字符串是什么意思,类似以下的导入
***** 是分组,也就是group
C***ecutiveScroller 是module
***** 是版本号
有了上面知识,我们继续
1.依赖树
当发生了错误,我们需要知道是哪些库引入导致的冲突,这时候就需要依赖树了,gradle给我们提供了对应的查看命令,在我们Android Studio软件窗口的右边,分别点击 Gradle--(对应的module)--Tasks--help--dependencies (需要哪个module就选择哪个)
点击后会在build生成依赖树,这时候查找哪些库会额外导入冲突的库
通过依赖树找到哪些库导致的版本不一致,这时候字需要修改导入,就能解决问题
比如还有A库引入了livedata,那你这样修改,mudule和group请看顶部的知识点
处理Gradle依赖冲突
在Android开发过程中会总会引入一些第三方依赖库,无可避免的会遇到jar/aar包冲突,Manifest合并冲突,资源冲突等问题
基于此本次主要记录下如何处理类冲突,jar/aar版本冲突。先由常见的***** found in modules alicloud-android-utdid-2.*** android-utdid冲突入手,常见于支付宝sdk和友盟Sdk的冲突。
磨刀不误砍材工,在处理冲突问题前,要先了解下如何查看Gradle依赖树,在AS的Terminal里输入 gradle :app:dependencies 即可查看gradle依赖树。输出结果如下(示意)
输出依赖树后,在里面搜索android-utdid,会发现有多个第三方库对utdid存在引入关系。
经过查看得知utdid我依赖为:*****:alicloud-android-utdid:*****
该依赖库的Group为*****为alicloud-android-utdid
下面要做的就是去除其他依赖对utdid的引入,仅保留一次有效的引用关系即可。
implementation (’*****:yyy:*****’){
exclude module: ’alicloud-android-utdid’
}
implementation (’*****:bbb:***’){
exclude module: ’alicloud-android-utdid’
}
常规查阅资料大家推荐去除重复引入的方法都是exclue group。实际上如该group下的依赖项较多,且只想去除某一个依赖时,这时使用exclude module能更细节且准确的控制去除某一项的引用关系。
以上为utdid的处理方式
关于微信sdk冲突的处理方式
问题背景:我方已集成wechat-sdk-android-with-mta sdk用作分享和支付功能,随着业务发展需要接入一个第三方业务Sdk,该Sdk内部具备支付功能,他们也进行了wechat-sdk-android-with-mta的引入,且两个微信sdk的版本不一致。
此时如果进行打包就会爆出各种*****的类冲突。
处理方式参照支付宝sdk的冲突方式
implementation (’*****:zzz:***’){
exclude module: ’wechat-sdk-android-with-mta’
}
关于百度地图API_KEY冲突的处理方式
百度地图需要在主工程的Manifest里注册一个API_KEY。如此时引入的第三方Sdk里同样有百度地图,且已经在内部注册了*****_KEY。
此时会出现*****的合并冲突。解决方式为增加tools:replace="android:value"属性即可
《meta-data
android:name="*****_KEY"
android:value=""
tools:replace="android:value"/》
在开发中不同第三方Sdk对基础依赖的版本会发生变化,比如ktx和compact的版本。需要强制指定这些基础依赖的版本统一
方式为在*****(app)里增加
configurati***.all{
*****’*****:core-ktx:***.0-alpha01’
}
后续将持续添加AndroidStudio里各种冲突的处理方式。
gradle 解决重复依赖
一、查看重复依赖
如果出现重复依赖一般会出现以下错误:
通过gradle命令查看重复依赖,在android studio命令窗口中输入以下命令:
稍等片刻,会出来一个树状图,其中用"-》"会标示出冲突的部分
二、去除重复依赖
1.如果两个独立的重复依赖包,去除之一即可;
***隐藏网址***
Done!
使用gradle构建时添加一下依赖在哪
在构建中加入Ivy仓库
我们可以通过URL地址或本地文件系统地址,将Ivy仓库加入到我们的构建中。
如果想通过URL地址添加一个Ivy仓库,我们可以将以下代码片段加入到*****文件中:
1
2
3
4
5
repositories {
ivy {
***隐藏网址***
}
}
如果想通过本地文件系统地址添加一个Ivy仓库,我们可以将以下代码片段加入到*****文件中:
1
2
3
4
5
repositories {
ivy {
url "../ivy-repo"
}
}
小贴士:如果你想要获得更多关于Ivy仓库配置的信息,你可以参考以下资源:
Section ***** Ivy Repositories of the Gradle User Guide
The API documentation of the IvyArtifactRepository
我们继续,下面是如何在构建中加入Maven仓库。
在构建中加入Maven仓库
与Ivy仓库很类似,我们可以通过URL地址或本地文件系统地址,将Maven仓库加入到我们的构建中。
如果想通过URL地址添加一个Maven仓库,我们可以将以下代码片段加入到*****文件中:
1
2
3
4
5
repositories {
maven {
***隐藏网址***
}
}
如果想通过本地文件系统地址添加一个Maven仓库,我们可以将以下代码片段加入到*****文件中:
1
2
3
4
5
repositories {
maven {
url "../maven-repo"
}
}
在加入Maven仓库时,Gradle提供了三种“别名”供我们使用,它们分别是:
mavenCentral()别名,表示依赖是从Central Maven 2 仓库中获取的。
jcenter()别名,表示依赖是从Bintary’s JCenter Maven 仓库中获取的。
mavenLocal()别名,表示依赖是从本地的Maven仓库中获取的。
如果我们想要将Central Maven 2 仓库加入到构建中,我们必须在*****文件中加入以下代码片段:
1
2
3
repositories {
mavenCentral()
}
小贴士:如果你想要获取更多关于Maven仓库配置的信息,你可以参考这篇文章:
section ***** Maven Repositories of the Gradle User Guide
我们继续,下面是如何在构建中加入Flat Directory仓库。
Gradle 传递依赖
假设我们有项目, ProjectA, ProjectB 和 ProjectC, 此时, A依赖B, B依赖C, 那么这种依赖就是传递依赖
例如上面的例子, 我们打印出当前依赖jar的位置
更多文章:
js生成结构化(什么叫做结构化程序设计,面向对象的程序设计,以及其特点)
2026年4月23日 07:20
c语言中struct(C语言结构体中struct和typedef struct有什么区别)
2026年4月23日 06:20







