Retrofit,Picasso和Bmob的包依賴衝突
阿新 • • 發佈:2019-02-08
我在寫我的APP的時候因為要記錄資訊所以使用了Bmob的資料服務,然後我需要載入網路圖片所以使用了Picasso載入圖片,這時候程式是可以執行的,但是當我使用Retrofit的時候,程式就再也不能運行了,AS報了下面的錯誤:
okhttp的包依賴衝突了。我去Bmob的文件中心看更新日誌的時候發現了下面這個:
從這裡我們就能看出來在Bmob是有依賴okhttp的,所以會有依賴衝突,於是我就詢問了工作人員,就是要exclude掉okhttp的包,於是我照做了,的確程式能重新運行了,但是圖片再也載入不出來了,這時候我就懵逼了,為什麼會這樣呢,這時候我就想到是不是Picasso庫依賴的okhttp的版本很高,如果我們exclude掉的話,導致無法載入了
給自己提個醒:以後運用庫的時候不能單純的去使用這個庫,要知道這個庫內部的依賴,要不然就會像這次一樣,因為這個浪費自己很多時間,也浪費了學長很多時間
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是能夠正常執行的了。