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

1,352 阅读2分钟

死因

发生冲突的两个包分别是

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不仅版本不同连特么包名都不一样(╯‵□′)╯︵┻━┻ 死法如图:

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

解决方案

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

友盟官网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+都有

友盟支持的平台