衝突說明
由於 mPaaS 使用 wire/okio 來進行 RPC 網路連接,而 okhttp 也需要引用 okio,所以當您在使用 mPaaS 的同時使用了 okhttp,那就可能出現 wire/okio 衝突。
解決方案
10.1.68 基準
移除 mPaaS 的 wire/okio 依賴,並對 移動網關 功能進行迴歸測試以確保功能正常。操作步驟如下:
確認 mPaaS 所使用的 wire/okio 版本。
'com.squareup.okio:okio:1.7.0@jar' 'com.squareup.wire:wire-lite-runtime:1.5.3.4@jar'
擷取 mPaaS 第三方 SDK 的
group:artifact
資訊。'com.alipay.android.phone.thirdparty:wire-build'
移除 mPaaS 庫。
如果您採用原生 AAR 方式接入 mPaaS,gradle 的依賴傳遞會自動使用較高的版本,無需主動移除。通常來說 mPaaS 選擇使用的版本具有較高的穩定性和安全性,建議使用 mPaaS 提供的版本。如果版本不一致,請在上線前對 mPaaS 功能進行測試以保證穩定性。
如果您採用 mPaaS Inside 或組件化(Portal & Bundle)方式接入 mPaaS,需執行如下操作:
mpaascomponents { excludeDependencies = [ "com.alipay.android.phone.thirdparty:wire-build" ] }
加回 wire 或 okio(使用公網的 wire/okio,原生 AAR 方式接入方式無需關注)。因為 mPaaS 把 wire 和 okio 的依賴,都寫在
com.alipay.android.phone.thirdparty:wire-build
庫內,所以您需要根據實際情況,選擇性加回。如果只是 okio 衝突,但不存在 wire 衝突,需要加回 wire。
implementation 'com.squareup.wire:wire-lite-runtime:1.5.3.4@jar'
如果只是 wire 衝突,但不存在 okio 衝突,需要加回 okio。
'com.squareup.okio:okio:1.7.0@jar'
10.2.3 基準
完全移除 mPaaS 的版本依賴,使用業務本身需要的版本。解決 wire/okio 衝突,需要執行以下幾步操作:
去除 mPaaS 中的 wire,目前 mPaaS 內部不強依賴 wire。
原生 AAR 專案中需執行如下操作:
configurations { all*.exclude group: 'com.alipay.android.phone.thirdparty', module: 'wire-build' }
mPaaS Inside & 組件化(Portal & Bundle)專案中需執行如下操作:
mpaascomponents { excludeDependencies = [ "com.alipay.android.phone.thirdparty:wire-build" ] }
所有業務方 rpc 的 pb 類繼承
com.squareup.wire.Message
,需要改成繼承com.mpaas.thirdparty.squareup.wire.Message
。以下組件功能需要迴歸: