全部產品
Search
文件中心

Mobile Platform as a Service:解決 wire/okio 衝突

更新時間:Jul 13, 2024

衝突說明

由於 mPaaS 使用 wire/okio 來進行 RPC 網路連接,而 okhttp 也需要引用 okio,所以當您在使用 mPaaS 的同時使用了 okhttp,那就可能出現 wire/okio 衝突。

解決方案

10.1.68 基準

移除 mPaaS 的 wire/okio 依賴,並對 移動網關 功能進行迴歸測試以確保功能正常。操作步驟如下:

  1. 確認 mPaaS 所使用的 wire/okio 版本。

    'com.squareup.okio:okio:1.7.0@jar'
    'com.squareup.wire:wire-lite-runtime:1.5.3.4@jar'
  2. 擷取 mPaaS 第三方 SDK 的 group:artifact 資訊。

    'com.alipay.android.phone.thirdparty:wire-build'
  3. 移除 mPaaS 庫。

    • 如果您採用原生 AAR 方式接入 mPaaS,gradle 的依賴傳遞會自動使用較高的版本,無需主動移除。通常來說 mPaaS 選擇使用的版本具有較高的穩定性和安全性,建議使用 mPaaS 提供的版本。如果版本不一致,請在上線前對 mPaaS 功能進行測試以保證穩定性。

    • 如果您採用 mPaaS Inside 或組件化(Portal & Bundle)方式接入 mPaaS,需執行如下操作:

      mpaascomponents {
      excludeDependencies = [
        "com.alipay.android.phone.thirdparty:wire-build"
      ]
      }
  4. 加回 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 衝突,需要執行以下幾步操作:

  1. 去除 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"
                  ]
      }
  2. 所有業務方 rpc 的 pb 類繼承 com.squareup.wire.Message,需要改成繼承com.mpaas.thirdparty.squareup.wire.Message

    以下組件功能需要迴歸: