冲突说明
由于 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
。以下组件功能需要回归: