那些年遇到的问题--依赖冲突

起因

我们的aar使用华为的某个功能,依赖的库比较新,其中华为的base库版本为4.0.2,第三方使用华为push,且版本比较旧,华为的base库为2.6.3,在接入我们的aar时产生了冲突。
通过如下命令可以查看依赖树:

gradlew :app:dependencies

通过依赖树可以看到,两者版本不一致
在这里插入图片描述

解决方式

1.去除其中的一个base库

  implementation 'com.huawei.android.hms:push:2.6.3.301', {
    
    
        exclude group: 'com.huawei.android.hms',module:'base'
    }

2.统一版本

configurations.all {
    
    
    //循环一个个的依赖库
    resolutionStrategy.eachDependency {
    
     DependencyResolveDetails details ->
        //获取当前循环到的依赖库
        def requested = details.requested
        // 查找要作处理的依赖的group名
        if (requested.group == 'com.huawei.android.hms') {
    
    
            // 查找要作处理的依赖的module名
            if (requested.name.startsWith("base")) {
    
    
                //这里指定需要统一的依赖版本
                details.useVersion '4.0.3.302'
//                details.useVersion '2.6.1.301'
            }
        }
    }
}

后续处理

以上方式是虽然能解决base库冲突的问题,但是由于base库更新了,导致第三方的上层的旧版本push库依赖不能兼容更新以后的base库,最终只能第三方更新华为push库。

相关阅读

1.Android gradle依赖冲突解决办法

猜你喜欢

转载自blog.csdn.net/fengyulinde/article/details/106282404
今日推荐