那些年遇到的問題--依賴衝突

起因

我們的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依賴衝突解決辦法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章