全部产品

解决 wire/okio 冲突

更新时间:2020-06-15 19:53:46

冲突说明

由于 mPaaS 使用 wire/okio 来进行 RPC 网络连接,而 okhttp 也需要引用 okio,所以当您在使用 mPaaS 的同时使用了 okhttp,那就可能出现 wire/okio 冲突。

解决方法

移除 mPaaS 的 wire/okio 依赖,并对 移动网关 功能进行回归测试以确保功能正常。

操作步骤

  1. 确认 mPaaS 所使用的 wire/okio 版本。

    1. 'com.squareup.okio:okio:1.7.0@jar'
    2. 'com.squareup.wire:wire-lite-runtime:1.5.3.4@jar'
  2. 获取 mPaaS 第三方 SDK 的 group:artifact 信息。

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

    • AAR 方式
      如果您是采用原生 AAR 方式接入 mPaaS,gradle 的依赖传递会自动使用较高的版本,无需主动移除。通常来说 mPaaS 选择使用的版本具有较高的稳定性和安全性,建议使用 mPaaS 提供的版本。如果版本不一致,请在上线前对 mPaaS 功能进行测试以保证稳定性。
    • mPaaS Inside & 组件化(Portal & Bundle)
      1. mpaascomponents {
      2. excludeDependencies = [
      3. "com.alipay.android.phone.thirdparty:wire-build"
      4. ]
      5. }
  4. 加回 wire 或 okio(使用公网的 wire/okio。原生 AAR 方式接入方式无需关注)。
    因为 mPaaS 把 wire 和 okio 的依赖,都写在 com.alipay.android.phone.thirdparty:wire-build 库内,所以您需要根据实际情况,选择性加回。

    • 如果只是 okio 冲突,但不存在 wire 冲突,需要加回 wire。

      1. implementation 'com.squareup.wire:wire-lite-runtime:1.5.3.4@jar'
    • 如果只是 wire 冲突,但不存在 okio 冲突,需要加回 okio。

      1. implementation 'com.squareup.wire:wire-lite-runtime:1.5.3.4@jar'