今天合并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 里面有一份
那為什么會產生兩份呢?
3.6.0版本是我的React Native 0.49 引用使用的。
3.8.1版本來源于手動引用的一個jar包。
一般來說,如果傳遞依賴都通過compile引入,那么Gradle會自動使用較高的那個版本。
而像上面這個,一個通過jar一個是React Native的傳遞依賴,所以造成了沖突。
二、解決辦法
因為已經有React Native的 com.squareup.okhttp3:urlconnection
將手動引用的jar包去掉。