眾所周知。bmob提供的Androidsdk必須要去掉重復(fù)依賴才能使用。
implementation 'cn.bmob.android:bmob-sdk:3.6.2'
如圖所示纠吴。bmob依賴了gson硬鞍、okio慧瘤、rx等jar
這個問題在as3.0以前可以通過去除okhttp中的okio,不依賴gson來解決固该。
但是到3.0以后我使用implementation 來依賴bmob的sdk竟然在代碼中出現(xiàn)了無法找到gson相關(guān)文件的錯誤锅减。
如果再在引用gson庫則可以用過編譯,而運行時提示
Program type already present: com.google.gson.annotations.Since
表示依賴沖突了伐坏。
// api rootProject.ext.dependencies["gson"]
implementation ('cn.bmob.android:bmob-sdk:3.6.2') {
exclude group: 'com.google.code.gson'
}
我考慮來考慮去怔匣。。還以為bmob有啥黑科技桦沉∶柯鳎或者我依賴的底層框架有問題。(MVPArms)
然后我去除gradle中重復(fù)的gson依賴
代碼修正提示Add library 纯露。但這樣選擇后并沒有解決問題剿骨。運行后依舊出現(xiàn)這個提示。
這時候我就很懷疑是不是沒有真正的依賴上埠褪。
然后我修改了依賴api為
// api rootProject.ext.dependencies["gson"]
api('cn.bmob.android:bmob-sdk:3.6.2') {
exclude group: 'com.google.code.gson'
}
問題迎刃而解浓利。
所以問題的源頭出在沒有理解gradle的依賴指令上。
api 指令
跟2.x版本的 compile完全相同
implementation指令
只能在內(nèi)部使用此模塊钞速,比如在一個libiary中使用implementation依賴了gson庫贷掖,然后主項目依賴了libiary,那么渴语,我的主項目就無法訪問gson庫中的方法苹威,這樣的好處是編譯速度會加快。而我的app模塊引用了底層模塊驾凶,但底層模塊使用implementation依賴了bmobsdk導(dǎo)致了錯誤牙甫。