依賴衝突時的解決方法

github:coolmayejava

本篇文章是直觀介紹項目依賴衝突時的解決方案git

依賴類型

implementation:依賴方式僅僅侷限於「當前module」,優勢增長編譯速度,對外隱藏調用接口github

api:參與app的編譯和打包,是最廣泛的依賴方法api

compileOnly:參與編譯的過程,但不參與最後的打包。在本身的module中依賴一些最經常使用的庫能夠避免衝突app

runtimeOnly:編譯時不參與,對外隱藏全部的接口,只參最後的打包gradle

參考了一部分下面方法 依賴衝突的解決方法ui

依賴衝突時的解決辦法

這裏分爲兩個步驟spa

1.點擊Terminal 輸入gradlew -q app:dependencies回車便可將app中所依賴的庫展現出來(有些項目可能會報 'gradlew'不是內部或外部命令,也不是可運行的程序 這個問題,解決方法是 拷貝其餘項目根目錄中的gradlewgradlew.bat兩個文件到本身的項目中就能夠啦).net

在這裏插入圖片描述

2.在module下的build.gradle的根節點下添加以下代碼code

resolutionStrategy {
        failOnVersionConflict()//版本衝突時報錯
    }
}
複製代碼

而後點擊右上角 Sync Now 進行同步

這時衝突的版本號就會在Messages頁面中彈出,提示有如下版本的庫是衝突的

圖注:大少公衆號

3.這時咱們有[兩個]處理辦法

直接統一法:將全部出現的版本號統一指定爲當前版本

configurations.all {
    resolutionStrategy {
        failOnVersionConflict()//版本衝突時報錯
        force 'com.squareup.okio:okio:1.15.0'//強制指定版本
    }
}
複製代碼

當打包時報錯的類被處理後,// failOnVersionConflict()該方法,而後從新打包。

移除異己法:選中okio:1.13.0字段回到Terminal中按Ctrl+F搜索該庫在哪一個依賴中使用,搜索到後,找到build.gradle中的該依賴,將對應的包去除

implementation ('com.squareup.okhttp3:okhttp:3.9.0'){

        exclude group: 'com.squareup.okio'
 }
複製代碼

從新編譯便可發現衝突被解決

4.注意

gradle會用自動採用最新版本庫的方法屏蔽掉大部分的衝突問題,但極小部分的(也就是編譯時報錯的)就須要咱們手動去處理了,以上方法是針對於處理打包時報錯的相關庫,請你們主動對這些庫進行排查。

相關文章
相關標籤/搜索