起因
我們的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庫。