前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AndroidStudio Gradle 解决包冲突的方法——开发记录

AndroidStudio Gradle 解决包冲突的方法——开发记录

作者头像
木溪bo
发布2022-01-04 16:09:15
1.2K0
发布2022-01-04 16:09:15
举报
文章被收录于专栏:木溪知识加油站

方案一、去掉全部依赖

代码语言:javascript
复制
 // 依据构建名称排除
 exclude module: 'cglib' 
 // 依据组织名称排除
 exclude group: 'org.jmock' 
 // 依据组织名称+构件名称排除
 exclude group: 'org.unwanted', module: 'iAmBuggy' 
eg:
去除support-v4 包的依赖(去掉全部)
  configurations {
     all*.exclude group: 'com.android.support', module: 'support-v4'
 }

方案二、去掉部分冲突 例如去除 com.github.niorgai:StatusBarCompat:2.1.3 引用的 com.android.support 包下内容

代码语言:javascript
复制
 compile('com.github.niorgai:StatusBarCompat:2.1.3', {
       exclude group: 'com.android.support'
   })

 去除 module  引用的 'com.google.code.findbugs:jsr305' 的相关内容
  compile(project(':downlibrary')) {
       exclude group: 'com.google.code.findbugs', module: 'jsr305'
   }

configurations {
   //编译期排除commons模块
   compile.exclude module: 'commons'
   //在整个构建过程中排除pkaq.tiger:share
   all*.exclude group: 'pkaq.tiger', module: 'share'
}

方案三、强制依赖某个版本 包依赖冲突的时候

代码语言:javascript
复制
configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '26.1.0'
            }
        }
    }
}

方案四、使用强制版本   当然,有时候你可能仅仅是需要强制使用某个统一的依赖版本,而不是排除他们,那么此时force就该登场了。指定force = true属性可以冲突时优先使用该版本进行解决。

代码语言:javascript
复制
compile('org.hibernate:hibernate:3.1') {
    force = true
}

全局配置强制使用某个版本的依赖来解决依赖冲突中出现的依赖

configurations.all {
   resolutionStrategy {
       force 'org.hamcrest:hamcrest-core:1.3'
   }
}

末尾引用

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021.09.03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档