美文网首页
AndroidStudio Gradle 解决包冲突的方法——开

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

作者: 木溪bo | 来源:发表于2021-09-03 16:54 被阅读0次

    方案一、去掉全部依赖

     // 依据构建名称排除
     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 包下内容

     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'
    }
    

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

    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属性可以冲突时优先使用该版本进行解决。

    compile('org.hibernate:hibernate:3.1') {
        force = true
    }
    
    全局配置强制使用某个版本的依赖来解决依赖冲突中出现的依赖
    
    configurations.all {
       resolutionStrategy {
           force 'org.hamcrest:hamcrest-core:1.3'
       }
    }
    

    末尾引用

    相关文章

      网友评论

          本文标题:AndroidStudio Gradle 解决包冲突的方法——开

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