有時候,咱們的工程大了,或者引用的外面的工具包,開源jar包或者推送等jar包,開開心心的想集成一下,但是一會兒來了,奔潰了,jar包之間衝突,常見的support-v4包不一樣版本之間的衝突。android
gradle提供了能夠查看library之間依賴的關係,下面咱們首先先搭環境。app
Android Studio中使用的 gradle 版本通常不是最新版,因此在使用其自帶的 Terminal 時容易報版本太低的錯誤,爲了方便使用,我從 gradle
官網下載了最新版的 gradle ,而後配置好 gradle 的環境變量以方便使用。框架
gradle 自己不提供查看 library 依賴關係的命令,幸虧 Android Studio 提供了可供查看的 task ,位於各個 module 的 help 任務堆中,以下圖:工具
雙擊 dependencies 執行該任務,能夠看到在 gradle console 中均沒有獲得依賴關係,結果以下圖所示:測試
從上圖能夠看出不管咱們執行哪一個 module 下的 dependencies 其結果都是至關於在 Root project 執行了該任務;那麼在 app project 或者 test01library project 中執行該 dependencies 任務呢?此時就須要咱們經過命令行的方式執行 dependencies 了。gradle
配置好環境後,首先cmd 進入當前你的工程的核心module路徑,測試了下:gradle dependencies 在gradle 4.1下沒有打印出依賴關係,使用了 gradle -q dependencies 就ok了
spa
因本身搭框架的時候使用了比較多的工具和開源的工具,這兒遇到的衝突時support-v4包的和別的jar包裏含有的support-v4衝突了,最後解決方法:命令行
解決包衝突,關鍵仍是能夠看到包之間依賴關係,比較完美解決問題。3d
附:code
gradlew :模塊名稱:dependencies
或者使用gradle窗口自帶dependencies直接看依賴樹,能夠很好查看包的依賴狀況
常常會遇到support包和好比appcompat包下的support包衝突的狀況,好比butterknife裏面也有support包,通常能夠這樣處理:
compile ('com.jakewharton:butterknife:8.8.1'){ exclude group: 'com.android.support' }