【Gradle】解决友盟分享SDK和其余分享SDK冲突的问题

死因

发生冲突的两个包分别是android

implementation 'com.umeng.umsdk:share-qq:6.9.4'
implementation('com.xyzlf.share:sharesdk:0.0.11') {
    exclude group: 'com.android.support', module: 'appcompat-v7'
}
复制代码

第一个是友盟的分享SDK,第二个是xyzlfShareSDK 这两个包引用的QQ的opensdk不只版本不一样连特么包名都不同(╯‵□′)╯︵┻━┻ 死法如图: git

Gradle依赖冲突报错
能够看到是com.tencent.connect这个包下的类重复了,这种小问题,抠掉就完了~( ̄▽ ̄~)~
尝试剔除
纳尼?没效果!∑(っ °Д °;)っ这尼玛不科学啊,仔细看看报错,发现了一点端倪。
报错的module
实际jar包名称
报错的module名称竟然和引入的jar包名称不同?下面shareSDK也是同样,并非引入的jar包的名称。
哦~混淆改变了module名称因此抠不掉?(←我猜的)
仍是说由于两个open_sdk的版本不同?
因而我去尝试了clone一下ShareSDK而后用友盟的这个opensdk替换掉里面的opensdk发现问题依旧。

解决方案

友盟的官网从新下载SDK,不能用Gradle导入仓库里的SDK。 github

友盟官网SDK下载界面
在这里↓点设置,只勾QQ,而后打开zip包把lib和drawable里的东东丢到咱的项目里面
SDK下载设置
嗯?这是个啥玩意?里面居然没有open_sdk?难道在jar包里?
友盟QQ精简包
还真特么没有?∑(っ °Д °;)っ
jar包内容
等会∑(っ °Д °;)っ我再回去看看刚才这个下载界面
精简版SDK的描述
完整版SDK的描述
懂了!原来是友盟这厮魔改了SDK致使的!只勾完整版SDK,再次下载
完整版SDK
这下对了嘛,opensdk不要,把这个umeng-share-QQ-full拖进项目
放进libs
搞定,友盟QQ登陆和ShareSDK分享共存啦~( ̄▽ ̄~)~

总结

从新下载友盟的SDK,选择完整版,而后不导入opensdk就好了,记得导drawable
PS.期间一度怀疑是我Gradle没写对,反复修改Gradle都搞不定,差点怀疑人生。SDK冲突的时候仍是应该从源头上找缘由,SDK不靠谱简直出大问题,我的并不喜欢友盟这个平台,它致使的问题多花的时间比它的集成剩下的时间多多了。 不过。。。它是怎么搞定这么多平台的集成的∑(っ °Д °;)っ连脸书推特和刚凉凉的G+都有 bash

友盟支持的平台