github:coolmaye
這篇文章是簡單介紹專案的依賴和依賴衝突時的解決方法
依賴型別
***implementation:***依賴方式僅僅侷限於“當前module”,優點增加編譯速度,對外隱藏呼叫介面
***api:***參與app的編譯和打包,是最普遍的依賴方法
***compileOnly:***參與編譯的過程,但不參與最後的打包。 在自己的module中依賴一些最常用的庫可以避免衝突
***runtimeOnly:***編譯時不參與,對外隱藏所有的介面,只參最後的打包
參考下面方法依賴衝突的解決方法
依賴衝突時的解決辦法
將兩種方式結合,親測絕對有效
1.點選Terminal 輸入gradlew -q app:dependencies
回車即可將app中所依賴的庫展示出來
2.在module
下的build.gradle
的根節點下新增如下程式碼
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會用自動採用最新版本庫的方法遮蔽掉大部分的衝突問題,但極小部分的(也就是編譯時報錯的)就需要我們手動去處理了,一般以上方法都是針對於處理打包時報錯的相關庫,請大家有針對的對於這些庫進行排查。