架构日记(十)Sophix-Hotfix集成中,友盟和阿里系jar包冲突的解决方案-离线集成

友盟推送SDK依赖部分阿里系SDK功能,其中使用并封装了TNet SDK、Network SDK、ACCS SDK三个SDK,如果与以上三个SDK冲突,必须去掉您自己使用的三个中的SDK,同时使用了alicloud httpdns SDK、alicloud utls SDK、utdid SDK ,如果与以上三个SDK冲突,您可以去掉冲突中的一个即可(注意版本兼容)。感谢您的支持与厚爱!

友盟Android Push SDK与阿里集团其他库出现集成冲突的解决办法引导
Android Push当前使用到的阿里云相关库文件及版本为:
alicloud-android-sdk-httpdns-1.1.3.1
alicloud-android.utils-1.0.3
networksdk-3.5.5-open
tlog_adapter.3.0.0.17
tnet4android-3.1.1.14.9
如果您使用的友盟Push推送和您已经使用的阿里系产品有库冲突问题,可以采用Android SDK 6.0.1版本离线依赖的方式集成友盟Push推送,同时检查下载的push的libs中的依赖库,对于冲突的依赖库,建议使用友盟所使用的依赖库,如需使用其它阿里系产品的依赖库,需自行测试一下Push相关功能是否能正常使用(一般不会有问题)

 

utdit冲突 utdit2冲突 等等一系列冲突的解决方案

问题根源:

implementation 'com.aliyun.ams:alicloud-android-hotfix:3.2.14'

implementation 'com.umeng.umsdk:analytics:8.1.1'
//PushSDK必须依赖基础组件库,所以需要加入对应依赖
 implementation 'com.umeng.umsdk:common:1.5.4'
//PushSDK必须依赖utdid库,所以需要加入对应依赖
implementation 'com.umeng.umsdk:utdid:1.1.5.3'
//PushSDK
implementation 'com.umeng.umsdk:push:6.0.1'

hotfxi属于阿里系的包  其他的属于友盟系列的包,最恶心的是什么呢,友盟的push:6.0.1里面只有一个classes.jar 其他的都是源码,出现了类的冲突是无法解决的,exclude语法只能作用到module和group而无法作用的代码中的class。如图

架构日记(十)Sophix-Hotfix集成中,友盟和阿里系jar包冲突的解决方案-离线集成

是不是很气

解决方案:

去友盟的官网下载离线SDK

我下载的是离线SDK6.0.1

下载下来一个是这样的目录

架构日记(十)Sophix-Hotfix集成中,友盟和阿里系jar包冲突的解决方案-离线集成

首先我们删除两句话

implementation 'com.umeng.umsdk:common:1.5.4'

implementation 'com.umeng.umsdk:utdid:1.1.5.3'

mplementation 'com.umeng.umsdk:push:6.0.1'

然后将push目录作为一个module  Import Module作为一个依赖 :push

然后在app的gradle下引用

implementation project(':push')

题外话:所以写其他的问题如果你遇到了就这样解决

上面不是还有一个友盟的分析功能吗

implementation 'com.umeng.umsdk:analytics:8.1.1'  就是他  这个依赖会和一个jar包冲突包名是:utdid4all-1.1.5.3_proguard.jar

所以有这个依赖,utdid4all-xxx.jar一定要在主工程的libs文件内部删掉否则也会有冲突包问题

 

 

好了我们接着说,现在进入:push模块

架构日记(十)Sophix-Hotfix集成中,友盟和阿里系jar包冲突的解决方案-离线集成

这是我经过删改之后剩下的jar包,特别说一下因为你去除了implementation 'com.umeng.umsdk:common:1.5.4'

所以你要添加umeng-common-2.25.jar

架构日记(十)Sophix-Hotfix集成中,友盟和阿里系jar包冲突的解决方案-离线集成

 这个jar包需要删除  utils系列会和hotfix内部的jar包冲突,删除即可

接下来就是一些个人喜好的修改,我们将hotfix和友盟的依赖放到一起,给主工程用,是这样的

架构日记(十)Sophix-Hotfix集成中,友盟和阿里系jar包冲突的解决方案-离线集成

这个是push.gardle 这是模块化中的公共模块思想,将容易出问题的东西,又是通用的东西,放到一个basemodule中,防止这个错误再次发生。

至此,友盟推送和阿里系的冲突问题已经解决,顺便说一下有没有使用RxTool 1.7.6的兄弟,这里也是有问题的,因为RxTool1.7.6里面有一个aliPay.jar这里也和阿里系列的jar包冲突,解决方法是直接删掉aliPay.jar这个包即可。