1. 程式人生 > >Retrofit,Picasso和Bmob的包依賴衝突

Retrofit,Picasso和Bmob的包依賴衝突

我在寫我的APP的時候因為要記錄資訊所以使用了Bmob的資料服務,然後我需要載入網路圖片所以使用了Picasso載入圖片,這時候程式是可以執行的,但是當我使用Retrofit的時候,程式就再也不能運行了,AS報了下面的錯誤:
這裡寫圖片描述
okhttp的包依賴衝突了。我去Bmob的文件中心看更新日誌的時候發現了下面這個:
這裡寫圖片描述
從這裡我們就能看出來在Bmob是有依賴okhttp的,所以會有依賴衝突,於是我就詢問了工作人員,就是要exclude掉okhttp的包,於是我照做了,的確程式能重新運行了,但是圖片再也載入不出來了,這時候我就懵逼了,為什麼會這樣呢,這時候我就想到是不是Picasso庫依賴的okhttp的版本很高,如果我們exclude掉的話,導致無法載入了

於是我就將Picasso庫的版本降了下來,最後發現真的是這個原因,程式按照我想要的實現了。

給自己提個醒:以後運用庫的時候不能單純的去使用這個庫,要知道這個庫內部的依賴,要不然就會像這次一樣,因為這個浪費自己很多時間,也浪費了學長很多時間

PS:上面的解決方法對於最新的Bmob版本已經不管用了,我現在實現的方法是將Picasso庫以及Retrofit庫exclude掉com.squareup.okio這個庫就好了

//Bmob的資料服務SDK
implementation('cn.bmob.android:bmob-sdk:3.6.3')
//Bmob的訊息推送SDK
implementation('cn.bmob.android:bmob-push:1.0.2'
) //圖片載入Picasso庫 implementation ('com.squareup.picasso:picasso:2.71828') { exclude group: 'com.squareup.okio' } //網路請求Retrofit庫 implementation ('com.squareup.retrofit2:retrofit:2.4.0') { exclude group: 'com.squareup.okio' }

現在這個配置下最新版本的Bmob是能夠正常執行的了。