今天合并React Native分支到主分支的時候遇到Android Studio報錯 Error:Program type already present: okhttp3.OkUrlFactory$1,記錄一下解決的過程更耻。
一、錯誤原因
從報錯的英文來說脚祟,猜測是gradle 依賴出問題了姥宝,OkUrlFactory被兩次加載。
在項目中搜索 OkUrlFactory 類,果然發(fā)現(xiàn)了兩份:
(1)com.squareup.okhttp3:urlconnection:3.6.0@jar 里面有一份
(2)com.squareup.okhttp3:urlconnection:3.8.1@jar 里面有一份
那為什么會產(chǎn)生兩份呢崔列?
3.6.0版本是我的React Native 0.49 引用使用的。
3.8.1版本來源于手動引用的一個jar包旺遮。
一般來說赵讯,如果傳遞依賴都通過compile引入盈咳,那么Gradle會自動使用較高的那個版本。
而像上面這個边翼,一個通過jar一個是React Native的傳遞依賴鱼响,所以造成了沖突。
二讯私、解決辦法
因為已經(jīng)有React Native的 com.squareup.okhttp3:urlconnection
將手動引用的jar包去掉热押。